From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTP id 637985A02E0 for ; Wed, 15 May 2024 17:19:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1715786385; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7RvBNgptVSNTMwxkN3jpu2n2j2qh1blTNq49chIIoTU=; b=UbAlfAZriOa5aMyCg8foeWSsr5EqW2C3FwdOv915bYc6u9GUTbzr0TA/j3OeRstdi08D8Z jtnIbgdNLnjbZFo5j2xnkH403hqF/uLT+Aaei/VUo7gFIJ4X5tlbtzmyqm6p4ec0y4eFWh RNbuGQTVg6DUCkl1XcblpI+biMd91KI= Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-497-x-StiLd5NlqYnAMzGmIHGQ-1; Wed, 15 May 2024 11:19:29 -0400 X-MC-Unique: x-StiLd5NlqYnAMzGmIHGQ-1 Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-792cefecd00so915293285a.0 for ; Wed, 15 May 2024 08:19:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715786368; x=1716391168; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7RvBNgptVSNTMwxkN3jpu2n2j2qh1blTNq49chIIoTU=; b=wPP+4zX2tYVfbpHgJE02uZK8PvuXFLDupE5sJLPUdVrF+ovthOLyafYYk39810rvna s2Ac6qJn413WaIvBGdzg8iZdZ3terp7XKYrBDQAk4cZrQvo4DEF6DqRNzMQhfUGYWPTo z41NKHQbrCySQS297W6LvrIxvOt9GzgxX02pdiBJzFfRVVcv0s6szmwXbgbqcCDLHbFV JdIOyemymbypw1vcurznQyCWreU9oEwEpWrTbw1LazHE5gL+KbEUFVOrLaZivipmkTBy X4/V+Kkph/G4yEoaK+TAsfzzEsBpdQBri8gX3bp64RXOVnIfc7tFC02/VJu7rZNEGUUn B+ww== X-Gm-Message-State: AOJu0Yxd3+BNdkOBK+EZvejcFHnFpGAD1C09y4GdK4lZkrus07reIFuu WWQrDufIbJVMcnTo161Xpxp24sHxXAv+FmONuSrhMKoGFtON9wcRF0u0ZrzoaZm5DlGi9Eae1ZT CMZxzmzVjqgzldK3IJUZJwhasyt099WA9zRRhkjCoFIM4pGQP2A== X-Received: by 2002:a05:620a:4002:b0:790:ea3e:61cf with SMTP id af79cd13be357-792bbdda121mr3357952785a.15.1715786368398; Wed, 15 May 2024 08:19:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGxopf4fhQC3huxCZC6Dqr1UN7LxIV5GDAA5MDJoUHKoeX6iDJonCln6Xs23qbJjkNjEzwTlw== X-Received: by 2002:a05:620a:4002:b0:790:ea3e:61cf with SMTP id af79cd13be357-792bbdda121mr3357947685a.15.1715786367795; Wed, 15 May 2024 08:19:27 -0700 (PDT) Received: from [10.0.0.97] ([24.225.234.80]) by smtp.gmail.com with ESMTPSA id af79cd13be357-792bf340b32sm693958385a.126.2024.05.15.08.19.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 15 May 2024 08:19:27 -0700 (PDT) Message-ID: Date: Wed, 15 May 2024 11:19:25 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v4] tcp: move seq_to_tap update to when frame is queued To: David Gibson References: <20240514194406.755076-1-jmaloy@redhat.com> <1e672f7b-2660-c2e6-6803-c2a094b84bb3@redhat.com> From: Jon Maloy In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: 6KU4OXZTY63O7WP3H6BHKMG5QKID2MQ3 X-Message-ID-Hash: 6KU4OXZTY63O7WP3H6BHKMG5QKID2MQ3 X-MailFrom: jmaloy@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top, sbrivio@redhat.com, lvivier@redhat.com, dgibson@redhat.com X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQoNCk9uIDIwMjQtMDUtMTUgMDA6MDAsIERhdmlkIEdpYnNvbiB3cm90ZToNCj4gT24gVHVlLCBN YXkgMTQsIDIwMjQgYXQgMDM6NTc6NDNQTSAtMDQwMCwgSm9uIE1hbG95IHdyb3RlOg0KPj4gSGks DQo+PiBJIGRpZCBhIGxpdHRsZSBtb3JlIHRoYW4gc3VnZ2VzdGVkIGJ5IERhdmlkL1N0ZWZhbm8g aGVyZSwgYnV0IEkgYW0gYWx3YXlzDQo+PiBoYXBweQ0KPj4gd2hlbiBJIHNlZSBzaW1wbGlmaWNh dGlvbnMgdGhhdCBjYW4gcmVkdWNlIHRoZSBjb2RlIGFtb3VudC4NCj4+IEhvd2V2ZXIsIGJlaW5n IGFibGUgdG8gZWxpbWluYXRlIHN0cnVjdCB0Y3BfYnVmX3VwZGF0ZSBsZWQgbWUgdG8gYW5vdGhl cg0KPj4gaWRlYS4NCj4+DQo+PiBDb3VsZCB3ZSBqdXN0IGRvOg0KPj4NCj4+IHN0cnVjdCB0Y3Bf ZnJhbWUgew0KPj4gIMKgwqDCoMKgIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm47DQo+PiAgwqDC oMKgwqAgc3RydWN0IGlvdiBoZWFkZXJzW1RDUF9OVU1fSU9WU107DQo+PiB9Ow0KPj4gc3RhdGlj IHN0cnVjdCB0Y3BfZnJhbWUgwqAgdGNwNF9sMl9pb3YgW1RDUF9GUkFNRVNfTUVNXTsNCj4+IHN0 YXRpYyBzdHJ1Y3QgdGNwX2ZyYW1lIMKgIHRjcDZfbDJfaW92IFtUQ1BfRlJBTUVTX01FTV07DQo+ IEkgZG9uJ3QgdGhpbmsgdGhpcyB3b3JrcyBleGFjdGx5IGFzIGlzLiAgQXQgbGVhc3QgaW4gdGhl IHFlbXUgc29ja2V0DQo+IGNhc2Ugd2UgYWN0dWFsbHkgcmVseSBvbiB0aGUgaW92ZWMgYXJyYXlz IGZvciBtdWx0aXBsZSBmcmFtZXMgYmVpbmcNCj4gY29udGlndW91cyBzbyB3ZSBjYW4gc2VuZCB0 aGVtIGFsbCBpbiBvbmUgb3BlcmF0aW9uLg0KSSBzdXNwZWN0ZWQgc29tZXRoaW5nIGxpa2UgdGhh dCwgYnV0IGRpZG4ndCByZWFsbHkgY2hlY2sgdGhlIGNvZGUgZm9yIGl0Lg0KPiBXZSBtaWdodCBi ZSBhYmxlDQo+IHRvIGRvIHNvbWV0aGluZyBhIGJpdCBsaWtlIHRoZSB1ZHBfbWV0YVtdIHN0cnVj dHVyZXMgSSBoYXZlIGluIFVEUCwgc28NCj4gcmF0aGVyIHRoYW4gaGF2aW5nIHBhcmFsbGVsIGFy cmF5cyBmb3IgZWFjaCBvZiB0aGUgdmFyaW91cyBoZWFkZXINCj4gY29tcG9uZW50cyB3ZSBoYXZl IGFuIGFycmF5IG9mIHN0cnVjdHVyZXMgd2hpY2ggY29udGFpbnMgc3BhY2UgZm9yIGFsbA0KPiB0 aGUgaGVhZGVyIHZhcmlhbnRzIGEgZnJhbWUgbWlnaHQgd2FudCwgYWxvbmcgd2l0aCBhbnkgYWRk aXRpb25hbA0KPiBwZXItZnJhbWUgaW5mb3JtYXRpb24gd2UgbmVlZCwgd2hpY2ggY291bGQgaW5j bHVkZSB0aGUgY29ubmVjdGlvbi4NCj4gVGhlIGlvdiBhcnJheXMgdGhlbiBwb2ludCB0byB0aGUg dmFyaW91cyBidWZmZXJzIHdpdGhpbiB0aG9zZSAibWV0YSINCj4gc3RydWN0dXJlcy4NCj4NCj4g SSBkaWQgaGF2ZSBhIGxvb2sgYXQgaW1wbGVtZW50aW5nIHRoaXMgYSB3aGlsZSBiYWNrLCBidXQg cmFuIGludG8gc29tZQ0KPiBjb21wbGljYXRpb25zLiAgTm90aGluZyBwYXJ0aWN1bGFybHkgYmFk LCBJIGRvbid0IHRoaW5rLCBqdXN0IG1vcmUNCj4gdGhhbiBJIHdhbnRlZCB0byBkZWFsIHdpdGgg YXQgdGhlIHRpbWUuDQpUaGlzIHNvdW5kcyBsaWtlIGEgY29vbCB0YXNrIEkgY291bGQgZG8gYWZ0 ZXIgdGhpcyBzZXJpZXMgaGFzIGJlZW4gYXBwbGllZC4NCj4NCj4+IFdlIGNvdWxkIGV2ZW4gYWRk IGEgdjQvdjYgZmllbGQgdG8gdGhlIHN0cnVjdCwgYW5kIHBvc3NpYmx5DQo+PiBlbGltaW5hdGUg dGhlIG5lZWQgZm9yIHNlcGFyYXRlIHY0L3Y2IHF1ZXVlcyBhbHRvZ2V0aGVyLCB3aXRoDQo+PiBh bGwgaXRzIGVudGFpbGluZyBleHRyYSBjb2RlLg0KPiBJdCdzIGFic29sdXRlbHkgbXkgYWltIHRv IHVuaWZ5IG1vc3Qgb3IgYWxsIG9mIHRoZSB2NC92NiBzdHJ1Y3R1cmVzLg0KPiBXZSdsbCBuZWVk IHRoaXMgZm9yIHRoaW5ncyB3ZSB3YW50IGxpa2UgdjQ8LT52NiBmb3J3YXJkaW5nLiAgSQ0KPiBj ZXJ0YWlubHkgdGhpbmsgaXQncyBkb2FibGUsIGJ1dCBhcyBhYm92ZSwgSSBkaWQgaGl0IHNvbWUg ZmlkZGxpbmVzcw0KPiB3aGVuIEkndmUgdHJpZWQgaW4gdGhlIHBhc3QuDQpZZWFoLCB1bmlmeWlu ZyB0aG9zZSB0d28gc3RydWN0dXJlcyBsb29rcyB2ZXJ5IGRlc2lyYWJsZS4NCg0KLy8vam9uDQo+ DQo+PiBPbiAyMDI0LTA1LTE0IDE1OjQ0LCBKb24gTWFsb3kgd3JvdGU6DQo+Pj4gY29tbWl0IGE0 NjlmYzM5M2ZhMSAoInRjcCwgdGFwOiBEb24ndCBpbmNyZWFzZSB0YXAtc2lkZSBzZXF1ZW5jZSBj b3VudGVyIGZvciBkcm9wcGVkIGZyYW1lcyIpDQo+Pj4gZGVsYXllZCB1cGRhdGUgb2YgY29ubi0+ c2VxX3RvX3RhcCB1bnRpbCB0aGUgbW9tZW50IHRoZSBjb3JyZXNwb25kaW5nDQo+Pj4gZnJhbWUg aGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHB1c2hlZCBvdXQuIFRoaXMgaGFzIHRoZSBhZHZhbnRhZ2Ug dGhhdCB3ZQ0KPj4+IGltbWVkaWF0ZWx5IGNhbiBtYWtlIGEgbmV3IGF0dGVtcHQgdG8gdHJhbnNt aXQgYSBmcmFtZSBhZnRlciBhIGZhaWxlZA0KPj4+IHRyYXNubWl0LCByYXRoZXIgdGhhbiB3YWl0 aW5nIGZvciB0aGUgcGVlciB0byBsYXRlciBkaXNjb3ZlciBhIGdhcCBhbmQNCj4+PiB0cmlnZ2Vy IHRoZSBmYXN0IHJldHJhbnNtaXQgbWVjaGFuaXNtIHRvIHNvbHZlIHRoZSBwcm9ibGVtLg0KPj4+ DQo+Pj4gVGhpcyBhcHByb2FjaCBoYXMgdHVybmVkIG91dCB0byBjYXVzZSBhIHByb2JsZW0gd2l0 aCBzcHVyaW91cyBzZXF1ZW5jZQ0KPj4+IG51bWJlciB1cGRhdGVzIGR1cmluZyBwZWVyLWluaXRp YXRlZCByZXRyYW5zbWl0cywgYW5kIHdlIGhhdmUgcmVhbGl6ZWQNCj4+PiBpdCBtYXkgbm90IGJl IHRoZSBiZXN0IHdheSB0byBzb2x2ZSB0aGUgYWJvdmUgaXNzdWUuDQo+Pj4NCj4+PiBXZSBub3cg cmVzdG9yZSB0aGUgcHJldmlvdXMgbWV0aG9kLCBieSB1cGRhdGluZyB0aGUgc2FpZCBmaWVsZCBh dCB0aGUNCj4+PiBtb21lbnQgYSBmcmFtZSBpcyBhZGRlZCB0byB0aGUgb3V0cXVldWUuIFRvIHJl dGFpbiB0aGUgYWR2YW50YWdlIG9mDQo+Pj4gaGF2aW5nIGEgcXVpY2sgcmUtYXR0ZW1wdCBiYXNl ZCBvbiBsb2NhbCBmYWlsdXJlIGRldGVjdGlvbiwgd2Ugbm93IHNjYW4NCj4+PiB0aHJvdWdoIHRo ZSBwYXJ0IG9mIHRoZSBvdXRxdWV1ZSB0aGF0IGhhZCBkbyBiZSBkcm9wcGVkLCBhbmQgcmVzdG9y ZSB0aGUNCj4+PiBzZXF1ZW5jZSBjb3VudGVyIGZvciBlYWNoIGFmZmVjdGVkIGNvbm5lY3Rpb24g dG8gdGhlIG1vc3QgYXBwcm9wcmlhdGUNCj4+PiB2YWx1ZS4NCj4+Pg0KPj4+IFNpZ25lZC1vZmYt Ynk6IEpvbiBNYWxveSA8am1hbG95QHJlZGhhdC5jb20+DQo+Pj4NCj4+PiAtLS0NCj4+PiB2Mjog LSBSZS1zcHVuIGxvb3AgaW4gdGNwX3JldmVydF9zZXEoKSBhbmQgc29tZSBvdGhlciBjaGFuZ2Vz IGJhc2VkIG9uDQo+Pj4gICAgICAgICBmZWVkYmFjayBmcm9tIFN0ZWZhbm8gQnJpdmlvLg0KPj4+ ICAgICAgIC0gQWRkZWQgcGFyYW5vaWQgdGVzdCB0byBhdm9pZCB0aGF0IHNlcV90b190YXAgYmVj b21lcyBsb3dlciB0aGFuDQo+Pj4gICAgICAgICBzZXFfYWNrX2Zyb21fdGFwLg0KPj4+DQo+Pj4g djM6IC0gSWRlbnRpY2FsIHRvIHYyLiBDYWxsZWQgdjMgYmVjYXVzZSBpdCB3YXMgZW1iZWRkZWQg aW4gYSBzZXJpZXMNCj4+PiAgICAgICAgIHdpdGggdGhhdCB2ZXJzaW9uLg0KPj4+DQo+Pj4gdjQ6 IC0gSW4gdGNwX3JldmVydF9zZXEoKSwgd2UgcmVhZCB0aGUgc2VxdWVuY2UgbnVtYmVyIGZyb20g dGhlIFRDUA0KPj4+ICAgICAgICAgaGVhZGVyIGluc3RlYWQgb2Yga2VlcGluZyBhIGNvcHkgaW4g c3RydWN0IHRjcF9idWZfc2VxX3VwZGF0ZS4NCj4+PiAgICAgICAtIFNpbmNlIHRoZSBvbmx5IHJl bWFpbmluZyBmaWVsZCBpbiBzdHJ1Y3QgdGNwX2J1Zl9zZXFfdXBkYXRlIGlzDQo+Pj4gICAgICAg ICBhIHBvaW50ZXIgdG8gc3RydWN0IHRjcF90YXBfY29ubiwgd2UgZWxpbWluYXRlIHRoZSBzdHJ1 Y3QNCj4+PiAgICAgICAgIGFsdG9nZXRoZXIsIGFuZCBtYWtlIHRoZSB0Y3A2L3RjcDNfYnVmX3Nl cV91cGRhdGUgYXJyYXlzIGludG8NCj4+PiAgICAgICAgIGFycmF5cyBvZiBzYWlkIHBvaW50ZXIu DQo+Pj4gICAgICAgLSBSZW1vdmVkICdwYXJhbm9pZCcgdGVzdCBpbiB0Y3BfcmV2ZXJ0X3NlcS4g SWYgaXQgaGFwcGVucywgaXQNCj4+PiAgICAgICAgIGlzIG5vdCBmYXRhbCwgYW5kIHdpbGwgYmUg Y2F1Z2h0IGJ5IG90aGVyIGNvZGUgYW55d2F5Lg0KPj4+ICAgICAgIC0gU2VwYXJhdGVkIGZyb20g dGhlIHNlcmllcyBhZ2Fpbi4NCj4+PiAtLS0NCj4+PiAgICB0Y3AuYyB8IDU5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4gICAg MSBmaWxlIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQ0KPj4+DQo+ Pj4gZGlmZiAtLWdpdCBhL3RjcC5jIGIvdGNwLmMNCj4+PiBpbmRleCAyMWQwYWYwLi45NzZkYmE4 IDEwMDY0NA0KPj4+IC0tLSBhL3RjcC5jDQo+Pj4gKysrIGIvdGNwLmMNCj4+PiBAQCAtNDEwLDE2 ICs0MTAsNiBAQCBzdGF0aWMgaW50IHRjcF9zb2NrX25zCQlbTlVNX1BPUlRTXVtJUF9WRVJTSU9O U107DQo+Pj4gICAgICovDQo+Pj4gICAgc3RhdGljIHVuaW9uIGluYW55X2FkZHIgbG93X3J0dF9k c3RbTE9XX1JUVF9UQUJMRV9TSVpFXTsNCj4+PiAtLyoqDQo+Pj4gLSAqIHRjcF9idWZfc2VxX3Vw ZGF0ZSAtIFNlcXVlbmNlcyB0byB1cGRhdGUgd2l0aCBsZW5ndGggb2YgZnJhbWVzIG9uY2Ugc2Vu dA0KPj4+IC0gKiBAc2VxOglQb2ludGVyIHRvIHNlcXVlbmNlIG51bWJlciBzZW50IHRvIHRhcC1z aWRlLCB0byBiZSB1cGRhdGVkDQo+Pj4gLSAqIEBsZW46CVRDUCBwYXlsb2FkIGxlbmd0aA0KPj4+ IC0gKi8NCj4+PiAtc3RydWN0IHRjcF9idWZfc2VxX3VwZGF0ZSB7DQo+Pj4gLQl1aW50MzJfdCAq c2VxOw0KPj4+IC0JdWludDE2X3QgbGVuOw0KPj4+IC19Ow0KPj4+IC0NCj4+PiAgICAvKiBTdGF0 aWMgYnVmZmVycyAqLw0KPj4+ICAgIC8qKg0KPj4+ICAgICAqIHN0cnVjdCB0Y3BfcGF5bG9hZF90 IC0gVENQIGhlYWRlciBhbmQgZGF0YSB0byBzZW5kIHNlZ21lbnRzIHdpdGggcGF5bG9hZA0KPj4+ IEBAIC00NjEsNyArNDUxLDggQEAgc3RhdGljIHN0cnVjdCB0Y3BfcGF5bG9hZF90CXRjcDRfcGF5 bG9hZFtUQ1BfRlJBTUVTX01FTV07DQo+Pj4gICAgc3RhdGljX2Fzc2VydChNU1M0IDw9IHNpemVv Zih0Y3A0X3BheWxvYWRbMF0uZGF0YSksICJNU1M0IGlzIGdyZWF0ZXIgdGhhbiA2NTUxNiIpOw0K Pj4+IC1zdGF0aWMgc3RydWN0IHRjcF9idWZfc2VxX3VwZGF0ZSB0Y3A0X3NlcV91cGRhdGVbVENQ X0ZSQU1FU19NRU1dOw0KPj4+ICsvKiBSZWZlcmVuY2VzIHRyYWNraW5nIHRoZSBvd25lciBjb25u ZWN0aW9uIG9mIGZyYW1lcyBpbiB0aGUgdGFwIG91dHF1ZXVlICovDQo+Pj4gK3N0YXRpYyBzdHJ1 Y3QgdGNwX3RhcF9jb25uICp0Y3A0X2ZyYW1lX2Nvbm5zW1RDUF9GUkFNRVNfTUVNXTsNCj4+PiAg ICBzdGF0aWMgdW5zaWduZWQgaW50IHRjcDRfcGF5bG9hZF91c2VkOw0KPj4+ICAgIHN0YXRpYyBz dHJ1Y3QgdGFwX2hkcgkJdGNwNF9mbGFnc190YXBfaGRyW1RDUF9GUkFNRVNfTUVNXTsNCj4+PiBA QCAtNDgzLDcgKzQ3NCw4IEBAIHN0YXRpYyBzdHJ1Y3QgdGNwX3BheWxvYWRfdAl0Y3A2X3BheWxv YWRbVENQX0ZSQU1FU19NRU1dOw0KPj4+ICAgIHN0YXRpY19hc3NlcnQoTVNTNiA8PSBzaXplb2Yo dGNwNl9wYXlsb2FkWzBdLmRhdGEpLCAiTVNTNiBpcyBncmVhdGVyIHRoYW4gNjU1MTYiKTsNCj4+ PiAtc3RhdGljIHN0cnVjdCB0Y3BfYnVmX3NlcV91cGRhdGUgdGNwNl9zZXFfdXBkYXRlW1RDUF9G UkFNRVNfTUVNXTsNCj4+PiArLyogUmVmZXJlbmNlcyB0cmFja2luZyB0aGUgb3duZXIgY29ubmVj dGlvbiBvZiBmcmFtZXMgaW4gdGhlIHRhcCBvdXRxdWV1ZSAqLw0KPj4+ICtzdGF0aWMgc3RydWN0 IHRjcF90YXBfY29ubiAqdGNwNl9mcmFtZV9jb25uc1tUQ1BfRlJBTUVTX01FTV07DQo+Pj4gICAg c3RhdGljIHVuc2lnbmVkIGludCB0Y3A2X3BheWxvYWRfdXNlZDsNCj4+PiAgICBzdGF0aWMgc3Ry dWN0IHRhcF9oZHIJCXRjcDZfZmxhZ3NfdGFwX2hkcltUQ1BfRlJBTUVTX01FTV07DQo+Pj4gQEAg LTEyNjEsMjUgKzEyNTMsNDkgQEAgc3RhdGljIHZvaWQgdGNwX2ZsYWdzX2ZsdXNoKGNvbnN0IHN0 cnVjdCBjdHggKmMpDQo+Pj4gICAgCXRjcDRfZmxhZ3NfdXNlZCA9IDA7DQo+Pj4gICAgfQ0KPj4+ ICsvKioNCj4+PiArICogdGNwX3JldmVydF9zZXEoKSAtIFJldmVydCBhZmZlY3RlZCBjb25uLT5z ZXFfdG9fdGFwIGFmdGVyIGZhaWxlZCB0cmFuc21pc3Npb24NCj4+PiArICogQGNvbm5zOiAgICAg ICBBcnJheSBvZiBjb25uZWN0aW9uIHBvaW50ZXJzIGNvcnJlc3BvbmRpbmcgdG8gcXVldWVkIGZy YW1lcw0KPj4+ICsgKiBAZnJhbWVzOiAgICAgIFR3by1kaW1lbnNpb25hbCBhcnJheSBjb250YWlu aW5nIHF1ZXVlZCBmcmFtZXMgd2l0aCBzdWItaW92cw0KPj4+ICsgKiBAbnVtX2ZyYW1lczogIE51 bWJlciBvZiBlbnRyaWVzIGluIHRoZSB0d28gYXJyYXlzIHRvIGJlIGNvbXBhcmVkDQo+Pj4gKyAq Lw0KPj4+ICtzdGF0aWMgdm9pZCB0Y3BfcmV2ZXJ0X3NlcShzdHJ1Y3QgdGNwX3RhcF9jb25uICoq Y29ubnMsIHN0cnVjdCBpb3ZlYyAqZnJhbWVzLA0KPj4+ICsJCQkgICBpbnQgbnVtX2ZyYW1lcykN Cj4+PiArew0KPj4+ICsJaW50IGMsIGY7DQo+Pj4gKw0KPj4+ICsJZm9yIChjID0gMCwgZiA9IDA7 IGMgPCBudW1fZnJhbWVzOyBjKyssIGYgKz0gVENQX05VTV9JT1ZTKSB7DQo+Pj4gKwkJc3RydWN0 IHRjcF90YXBfY29ubiAqY29ubiA9IGNvbm5zW2NdOw0KPj4+ICsJCXN0cnVjdCB0Y3BoZHIgKnRo ID0gZnJhbWVzW2YgKyBUQ1BfSU9WX1BBWUxPQURdLmlvdl9iYXNlOw0KPj4+ICsJCXVpbnQzMl90 IHNlcSA9IG50b2hsKHRoLT5zZXEpOw0KPj4+ICsNCj4+PiArCQlpZiAoU0VRX0xFKGNvbm4tPnNl cV90b190YXAsIHNlcSkpDQo+Pj4gKwkJCWNvbnRpbnVlOw0KPj4+ICsNCj4+PiArCQljb25uLT5z ZXFfdG9fdGFwID0gc2VxOw0KPj4+ICsJfQ0KPj4+ICt9DQo+Pj4gKw0KPj4+ICAgIC8qKg0KPj4+ ICAgICAqIHRjcF9wYXlsb2FkX2ZsdXNoKCkgLSBTZW5kIG91dCBidWZmZXJzIGZvciBzZWdtZW50 cyB3aXRoIGRhdGENCj4+PiAgICAgKiBAYzoJCUV4ZWN1dGlvbiBjb250ZXh0DQo+Pj4gICAgICov DQo+Pj4gICAgc3RhdGljIHZvaWQgdGNwX3BheWxvYWRfZmx1c2goY29uc3Qgc3RydWN0IGN0eCAq YykNCj4+PiAgICB7DQo+Pj4gLQl1bnNpZ25lZCBpOw0KPj4+ICAgIAlzaXplX3QgbTsNCj4+PiAg ICAJbSA9IHRhcF9zZW5kX2ZyYW1lcyhjLCAmdGNwNl9sMl9pb3ZbMF1bMF0sIFRDUF9OVU1fSU9W UywNCj4+PiAgICAJCQkgICAgdGNwNl9wYXlsb2FkX3VzZWQpOw0KPj4+IC0JZm9yIChpID0gMDsg aSA8IG07IGkrKykNCj4+PiAtCQkqdGNwNl9zZXFfdXBkYXRlW2ldLnNlcSArPSB0Y3A2X3NlcV91 cGRhdGVbaV0ubGVuOw0KPj4+ICsJaWYgKG0gIT0gdGNwNl9wYXlsb2FkX3VzZWQpDQo+Pj4gKwkJ dGNwX3JldmVydF9zZXEodGNwNl9mcmFtZV9jb25ucywgJnRjcDZfbDJfaW92W21dWzBdLA0KPj4+ ICsJCQkgICAgICAgdGNwNl9wYXlsb2FkX3VzZWQgLSBtKTsNCj4+PiAgICAJdGNwNl9wYXlsb2Fk X3VzZWQgPSAwOw0KPj4+ICAgIAltID0gdGFwX3NlbmRfZnJhbWVzKGMsICZ0Y3A0X2wyX2lvdlsw XVswXSwgVENQX05VTV9JT1ZTLA0KPj4+ICAgIAkJCSAgICB0Y3A0X3BheWxvYWRfdXNlZCk7DQo+ Pj4gLQlmb3IgKGkgPSAwOyBpIDwgbTsgaSsrKQ0KPj4+IC0JCSp0Y3A0X3NlcV91cGRhdGVbaV0u c2VxICs9IHRjcDRfc2VxX3VwZGF0ZVtpXS5sZW47DQo+Pj4gKwlpZiAobSAhPSB0Y3A0X3BheWxv YWRfdXNlZCkNCj4+PiArCQl0Y3BfcmV2ZXJ0X3NlcSh0Y3A0X2ZyYW1lX2Nvbm5zLCAmdGNwNF9s Ml9pb3ZbbV1bMF0sDQo+Pj4gKwkJCSAgICAgICB0Y3A0X3BheWxvYWRfdXNlZCAtIG0pOw0KPj4+ ICAgIAl0Y3A0X3BheWxvYWRfdXNlZCA9IDA7DQo+Pj4gICAgfQ0KPj4+IEBAIC0yMTI5LDEwICsy MTQ1LDExIEBAIHN0YXRpYyBpbnQgdGNwX3NvY2tfY29uc3VtZShjb25zdCBzdHJ1Y3QgdGNwX3Rh cF9jb25uICpjb25uLCB1aW50MzJfdCBhY2tfc2VxKQ0KPj4+ICAgIHN0YXRpYyB2b2lkIHRjcF9k YXRhX3RvX3RhcChjb25zdCBzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25u LA0KPj4+ICAgIAkJCSAgICBzc2l6ZV90IGRsZW4sIGludCBub19jc3VtLCB1aW50MzJfdCBzZXEp DQo+Pj4gICAgew0KPj4+IC0JdWludDMyX3QgKnNlcV91cGRhdGUgPSAmY29ubi0+c2VxX3RvX3Rh cDsNCj4+PiAgICAJc3RydWN0IGlvdmVjICppb3Y7DQo+Pj4gICAgCXNpemVfdCBsNGxlbjsNCj4+ PiArCWNvbm4tPnNlcV90b190YXAgPSBzZXEgKyBkbGVuOw0KPj4+ICsNCj4+PiAgICAJaWYgKENP Tk5fVjQoY29ubikpIHsNCj4+PiAgICAJCXN0cnVjdCBpb3ZlYyAqaW92X3ByZXYgPSB0Y3A0X2wy X2lvdlt0Y3A0X3BheWxvYWRfdXNlZCAtIDFdOw0KPj4+ICAgIAkJY29uc3QgdWludDE2X3QgKmNo ZWNrID0gTlVMTDsNCj4+PiBAQCAtMjE0Miw4ICsyMTU5LDcgQEAgc3RhdGljIHZvaWQgdGNwX2Rh dGFfdG9fdGFwKGNvbnN0IHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4s DQo+Pj4gICAgCQkJY2hlY2sgPSAmaXBoLT5jaGVjazsNCj4+PiAgICAJCX0NCj4+PiAtCQl0Y3A0 X3NlcV91cGRhdGVbdGNwNF9wYXlsb2FkX3VzZWRdLnNlcSA9IHNlcV91cGRhdGU7DQo+Pj4gLQkJ dGNwNF9zZXFfdXBkYXRlW3RjcDRfcGF5bG9hZF91c2VkXS5sZW4gPSBkbGVuOw0KPj4+ICsJCXRj cDRfZnJhbWVfY29ubnNbdGNwNF9wYXlsb2FkX3VzZWRdID0gY29ubjsNCj4+PiAgICAJCWlvdiA9 IHRjcDRfbDJfaW92W3RjcDRfcGF5bG9hZF91c2VkKytdOw0KPj4+ICAgIAkJbDRsZW4gPSB0Y3Bf bDJfYnVmX2ZpbGxfaGVhZGVycyhjLCBjb25uLCBpb3YsIGRsZW4sIGNoZWNrLCBzZXEpOw0KPj4+ IEBAIC0yMTUxLDggKzIxNjcsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZGF0YV90b190YXAoY29uc3Qg c3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiwNCj4+PiAgICAJCWlmICh0 Y3A0X3BheWxvYWRfdXNlZCA+IFRDUF9GUkFNRVNfTUVNIC0gMSkNCj4+PiAgICAJCQl0Y3BfcGF5 bG9hZF9mbHVzaChjKTsNCj4+PiAgICAJfSBlbHNlIGlmIChDT05OX1Y2KGNvbm4pKSB7DQo+Pj4g LQkJdGNwNl9zZXFfdXBkYXRlW3RjcDZfcGF5bG9hZF91c2VkXS5zZXEgPSBzZXFfdXBkYXRlOw0K Pj4+IC0JCXRjcDZfc2VxX3VwZGF0ZVt0Y3A2X3BheWxvYWRfdXNlZF0ubGVuID0gZGxlbjsNCj4+ PiArCQl0Y3A2X2ZyYW1lX2Nvbm5zW3RjcDZfcGF5bG9hZF91c2VkXSA9IGNvbm47DQo+Pj4gICAg CQlpb3YgPSB0Y3A2X2wyX2lvdlt0Y3A2X3BheWxvYWRfdXNlZCsrXTsNCj4+PiAgICAJCWw0bGVu ID0gdGNwX2wyX2J1Zl9maWxsX2hlYWRlcnMoYywgY29ubiwgaW92LCBkbGVuLCBOVUxMLCBzZXEp Ow0KDQo=