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 96D845A0307 for ; Tue, 04 Jun 2024 19:36:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1717522586; 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=M3BmZj44bxnHnptMemFTJLWlKDulwRM2R6GeiJfZ7Jg=; b=OBLhLgLt95v1Ejh6jnNzvZ2q3GShJiySBWgDILxDDueBaXovtU8E5JiUMw0UvISsVN2Giv KRlyj6T4qPArU9rZvv2qH2OjFKIa+1sqDmO3IfVL/PuFODXHIfAvGbmNaz5Q3xmCJ0AVwe rXe1nyLlsLZQO+tg4Y8pnBJZqWKcHmY= Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-663-k-gtoBszOWyQmnE5h1ARzw-1; Tue, 04 Jun 2024 13:36:23 -0400 X-MC-Unique: k-gtoBszOWyQmnE5h1ARzw-1 Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-43fbbd06e34so12154591cf.2 for ; Tue, 04 Jun 2024 10:36:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717522583; x=1718127383; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=M3BmZj44bxnHnptMemFTJLWlKDulwRM2R6GeiJfZ7Jg=; b=XpVGCZD7/cQVEVYu2qPuAo7pphiTaKItfUTdWe6TzABIGTUjxU8yDYY93b6w6AaPIO /JQ1u/o4AVblFdQ3+zgA62nKKf3OD0hT3xuuezMdqLQfYTtS4XY7OJ9HkEihx4MbP1OZ Jmf4nWms2xamzJvP9ChWM/XdK6PswGU7Uxokt84Vk3I162uSU2nTipOII0yFVkgE0y5K BWETfgSyBFXeV5UO0CkdYAgC6/PLcEk/sRFs15e+hCkTKoE4Q6QNwJZABOLHCHQPTwTZ KURr9yG2C/ALarMnczb2xqsXkTa1mXSlb6lIT2Dhl3TdYKSZktV0rytaZOGcTRbGlEuz TrPw== X-Gm-Message-State: AOJu0YzeXGsB4q6lYpERXQKW3tImNQ+yDZOIdGn0/fAsH8qfNQBv0auv bEyz8+XmrstsNy1SKDWE7LPnHKAh+oewbalxdhwWTKmeTrqkaQ+aJ1PuISUCYkRm2uuczZoAbgn +r6hI/7FRKUv33TsDVNG8eeXRsEp7pL6KIuF0p7Pt0OsxNjtc+WrJ7it3Ig== X-Received: by 2002:ac8:7dc4:0:b0:43a:9717:3056 with SMTP id d75a77b69052e-4402b68c2a4mr67821cf.43.1717522583066; Tue, 04 Jun 2024 10:36:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFM+YkfR7xYiclYdx/Cwd5GkbJN1tRfY6KXoar0mZnNQ4pVe/yIQGMkoufTIoLW4SuWmG1WDg== X-Received: by 2002:ac8:7dc4:0:b0:43a:9717:3056 with SMTP id d75a77b69052e-4402b68c2a4mr67351cf.43.1717522582559; Tue, 04 Jun 2024 10:36:22 -0700 (PDT) Received: from [10.0.0.174] ([24.225.234.80]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-43ff23a1774sm51248151cf.11.2024.06.04.10.36.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Jun 2024 10:36:22 -0700 (PDT) Message-ID: <26391ddb-bea0-4c7a-abab-823c19897133@redhat.com> Date: Tue, 4 Jun 2024 13:36:21 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 1/3] tcp: move seq_to_tap update to when frame is queued To: David Gibson References: <20240515153429.859185-1-jmaloy@redhat.com> <20240515153429.859185-2-jmaloy@redhat.com> <1967b10f-479e-686e-9afc-ff52184f4198@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: PHMUUTJEM2SHXQ2AYIKTMM3XXMET4L4H X-Message-ID-Hash: PHMUUTJEM2SHXQ2AYIKTMM3XXMET4L4H 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: SGkgRGF2aWQsDQpUaGlzIGlzIHRoZSBsYXN0IGNvbW1lbnQgSSByZWNlaXZlZCBmcm9tIHlvdSBy ZWdhcmRpbmcgdGhpcyBwYXRjaC4NClNlZSBiZWxvdyBmb3IgZnVydGhlciBjb21tZW50Lg0KDQpP biAyMDI0LTA1LTE2IDAwOjE2LCBEYXZpZCBHaWJzb24gd3JvdGU6DQo+IE9uIFdlZCwgTWF5IDE1 LCAyMDI0IGF0IDEwOjU3OjA2UE0gLTA0MDAsIEpvbiBNYWxveSB3cm90ZToNCj4+DQo+PiBPbiAy MDI0LTA1LTE1IDIyOjI0LCBEYXZpZCBHaWJzb24gd3JvdGU6DQo+Pj4gT24gV2VkLCBNYXkgMTUs IDIwMjQgYXQgMTE6MzQ6MjdBTSAtMDQwMCwgSm9uIE1hbG95IHdyb3RlOg0KPj4+PiBjb21taXQg YTQ2OWZjMzkzZmExICgidGNwLCB0YXA6IERvbid0IGluY3JlYXNlIHRhcC1zaWRlIHNlcXVlbmNl IGNvdW50ZXIgZm9yIGRyb3BwZWQgZnJhbWVzIikNCj4+Pj4gZGVsYXllZCB1cGRhdGUgb2YgY29u bi0+c2VxX3RvX3RhcCB1bnRpbCB0aGUgbW9tZW50IHRoZSBjb3JyZXNwb25kaW5nDQo+Pj4+IGZy YW1lIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBwdXNoZWQgb3V0LiBUaGlzIGhhcyB0aGUgYWR2YW50 YWdlIHRoYXQgd2UNCj4+Pj4gaW1tZWRpYXRlbHkgY2FuIG1ha2UgYSBuZXcgYXR0ZW1wdCB0byB0 cmFuc21pdCBhIGZyYW1lIGFmdGVyIGEgZmFpbGVkDQo+Pj4+IHRyYXNubWl0LCByYXRoZXIgdGhh biB3YWl0aW5nIGZvciB0aGUgcGVlciB0byBsYXRlciBkaXNjb3ZlciBhIGdhcCBhbmQNCj4+Pj4g dHJpZ2dlciB0aGUgZmFzdCByZXRyYW5zbWl0IG1lY2hhbmlzbSB0byBzb2x2ZSB0aGUgcHJvYmxl bS4NCj4+Pj4NCj4+Pj4gVGhpcyBhcHByb2FjaCBoYXMgdHVybmVkIG91dCB0byBjYXVzZSBhIHBy b2JsZW0gd2l0aCBzcHVyaW91cyBzZXF1ZW5jZQ0KPj4+PiBudW1iZXIgdXBkYXRlcyBkdXJpbmcg cGVlci1pbml0aWF0ZWQgcmV0cmFuc21pdHMsIGFuZCB3ZSBoYXZlIHJlYWxpemVkDQo+Pj4+IGl0 IG1heSBub3QgYmUgdGhlIGJlc3Qgd2F5IHRvIHNvbHZlIHRoZSBhYm92ZSBpc3N1ZS4NCj4+Pj4N Cj4+Pj4gV2Ugbm93IHJlc3RvcmUgdGhlIHByZXZpb3VzIG1ldGhvZCwgYnkgdXBkYXRpbmcgdGhl IHNhaWQgZmllbGQgYXQgdGhlDQo+Pj4+IG1vbWVudCBhIGZyYW1lIGlzIGFkZGVkIHRvIHRoZSBv dXRxdWV1ZS4gVG8gcmV0YWluIHRoZSBhZHZhbnRhZ2Ugb2YNCj4+Pj4gaGF2aW5nIGEgcXVpY2sg cmUtYXR0ZW1wdCBiYXNlZCBvbiBsb2NhbCBmYWlsdXJlIGRldGVjdGlvbiwgd2Ugbm93IHNjYW4N Cj4+Pj4gdGhyb3VnaCB0aGUgcGFydCBvZiB0aGUgb3V0cXVldWUgdGhhdCBoYWQgZG8gYmUgZHJv cHBlZCwgYW5kIHJlc3RvcmUgdGhlDQo+Pj4+IHNlcXVlbmNlIGNvdW50ZXIgZm9yIGVhY2ggYWZm ZWN0ZWQgY29ubmVjdGlvbiB0byB0aGUgbW9zdCBhcHByb3ByaWF0ZQ0KPj4+PiB2YWx1ZS4NCj4+ Pj4NCj4+Pj4gU2lnbmVkLW9mZi1ieTogSm9uIE1hbG95IDxqbWFsb3lAcmVkaGF0LmNvbT4NCj4+ Pj4NCj4+Pj4gLS0tDQo+Pj4+IHYyOiAtIFJlLXNwdW4gbG9vcCBpbiB0Y3BfcmV2ZXJ0X3NlcSgp IGFuZCBzb21lIG90aGVyIGNoYW5nZXMgYmFzZWQgb24NCj4+Pj4gICAgICAgICBmZWVkYmFjayBm cm9tIFN0ZWZhbm8gQnJpdmlvLg0KPj4+PiAgICAgICAtIEFkZGVkIHBhcmFub2lkIHRlc3QgdG8g YXZvaWQgdGhhdCBzZXFfdG9fdGFwIGJlY29tZXMgbG93ZXIgdGhhbg0KPj4+PiAgICAgICAgIHNl cV9hY2tfZnJvbV90YXAuDQo+Pj4+DQo+Pj4+IHYzOiAtIElkZW50aWNhbCB0byB2Mi4gQ2FsbGVk IHYzIGJlY2F1c2UgaXQgd2FzIGVtYmVkZGVkIGluIGEgc2VyaWVzDQo+Pj4+ICAgICAgICAgd2l0 aCB0aGF0IHZlcnNpb24uDQo+Pj4+DQo+Pj4+IHY0OiAtIEluIHRjcF9yZXZlcnRfc2VxKCksIHdl IHJlYWQgdGhlIHNlcXVlbmNlIG51bWJlciBmcm9tIHRoZSBUQ1ANCj4+Pj4gICAgICAgICBoZWFk ZXIgaW5zdGVhZCBvZiBrZWVwaW5nIGEgY29weSBpbiBzdHJ1Y3QgdGNwX2J1Zl9zZXFfdXBkYXRl Lg0KPj4+PiAgICAgICAtIFNpbmNlIHRoZSBvbmx5IHJlbWFpbmluZyBmaWVsZCBpbiBzdHJ1Y3Qg dGNwX2J1Zl9zZXFfdXBkYXRlIGlzDQo+Pj4+ICAgICAgICAgYSBwb2ludGVyIHRvIHN0cnVjdCB0 Y3BfdGFwX2Nvbm4sIHdlIGVsaW1pbmF0ZSB0aGUgc3RydWN0DQo+Pj4+ICAgICAgICAgYWx0b2dl dGhlciwgYW5kIG1ha2UgdGhlIHRjcDYvdGNwM19idWZfc2VxX3VwZGF0ZSBhcnJheXMgaW50bw0K Pj4+PiAgICAgICAgIGFycmF5cyBvZiBzYWlkIHBvaW50ZXIuDQo+Pj4+ICAgICAgIC0gUmVtb3Zl ZCAncGFyYW5vaWQnIHRlc3QgaW4gdGNwX3JldmVydF9zZXEuIElmIGl0IGhhcHBlbnMsIGl0DQo+ Pj4+ICAgICAgICAgaXMgbm90IGZhdGFsLCBhbmQgd2lsbCBiZSBjYXVnaHQgYnkgb3RoZXIgY29k ZSBhbnl3YXkuDQo+Pj4+ICAgICAgIC0gU2VwYXJhdGVkIGZyb20gdGhlIHNlcmllcyBhZ2Fpbi4N Cj4+Pj4gLS0tDQo+Pj4+ICAgIHRjcC5jIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+Pj4gICAgMSBmaWxlIGNoYW5nZWQs IDM3IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQ0KPj4+Pg0KPj4+PiBkaWZmIC0tZ2l0 IGEvdGNwLmMgYi90Y3AuYw0KPj4+PiBpbmRleCAyMWQwYWYwLi45NzZkYmE4IDEwMDY0NA0KPj4+ PiAtLS0gYS90Y3AuYw0KPj4+PiArKysgYi90Y3AuYw0KPj4+PiBAQCAtNDEwLDE2ICs0MTAsNiBA QCBzdGF0aWMgaW50IHRjcF9zb2NrX25zCQlbTlVNX1BPUlRTXVtJUF9WRVJTSU9OU107DQo+Pj4+ ICAgICAqLw0KPj4+PiAgICBzdGF0aWMgdW5pb24gaW5hbnlfYWRkciBsb3dfcnR0X2RzdFtMT1df UlRUX1RBQkxFX1NJWkVdOw0KPj4+PiAtLyoqDQo+Pj4+IC0gKiB0Y3BfYnVmX3NlcV91cGRhdGUg LSBTZXF1ZW5jZXMgdG8gdXBkYXRlIHdpdGggbGVuZ3RoIG9mIGZyYW1lcyBvbmNlIHNlbnQNCj4+ Pj4gLSAqIEBzZXE6CVBvaW50ZXIgdG8gc2VxdWVuY2UgbnVtYmVyIHNlbnQgdG8gdGFwLXNpZGUs IHRvIGJlIHVwZGF0ZWQNCj4+Pj4gLSAqIEBsZW46CVRDUCBwYXlsb2FkIGxlbmd0aA0KPj4+PiAt ICovDQo+Pj4+IC1zdHJ1Y3QgdGNwX2J1Zl9zZXFfdXBkYXRlIHsNCj4+Pj4gLQl1aW50MzJfdCAq c2VxOw0KPj4+PiAtCXVpbnQxNl90IGxlbjsNCj4+Pj4gLX07DQo+Pj4+IC0NCj4+Pj4gICAgLyog U3RhdGljIGJ1ZmZlcnMgKi8NCj4+Pj4gICAgLyoqDQo+Pj4+ICAgICAqIHN0cnVjdCB0Y3BfcGF5 bG9hZF90IC0gVENQIGhlYWRlciBhbmQgZGF0YSB0byBzZW5kIHNlZ21lbnRzIHdpdGggcGF5bG9h ZA0KPj4+PiBAQCAtNDYxLDcgKzQ1MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgdGNwX3BheWxvYWRfdAl0 Y3A0X3BheWxvYWRbVENQX0ZSQU1FU19NRU1dOw0KPj4+PiAgICBzdGF0aWNfYXNzZXJ0KE1TUzQg PD0gc2l6ZW9mKHRjcDRfcGF5bG9hZFswXS5kYXRhKSwgIk1TUzQgaXMgZ3JlYXRlciB0aGFuIDY1 NTE2Iik7DQo+Pj4+IC1zdGF0aWMgc3RydWN0IHRjcF9idWZfc2VxX3VwZGF0ZSB0Y3A0X3NlcV91 cGRhdGVbVENQX0ZSQU1FU19NRU1dOw0KPj4+PiArLyogUmVmZXJlbmNlcyB0cmFja2luZyB0aGUg b3duZXIgY29ubmVjdGlvbiBvZiBmcmFtZXMgaW4gdGhlIHRhcCBvdXRxdWV1ZSAqLw0KPj4+PiAr c3RhdGljIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKnRjcDRfZnJhbWVfY29ubnNbVENQX0ZSQU1FU19N RU1dOw0KPj4+PiAgICBzdGF0aWMgdW5zaWduZWQgaW50IHRjcDRfcGF5bG9hZF91c2VkOw0KPj4+ PiAgICBzdGF0aWMgc3RydWN0IHRhcF9oZHIJCXRjcDRfZmxhZ3NfdGFwX2hkcltUQ1BfRlJBTUVT X01FTV07DQo+Pj4+IEBAIC00ODMsNyArNDc0LDggQEAgc3RhdGljIHN0cnVjdCB0Y3BfcGF5bG9h ZF90CXRjcDZfcGF5bG9hZFtUQ1BfRlJBTUVTX01FTV07DQo+Pj4+ICAgIHN0YXRpY19hc3NlcnQo TVNTNiA8PSBzaXplb2YodGNwNl9wYXlsb2FkWzBdLmRhdGEpLCAiTVNTNiBpcyBncmVhdGVyIHRo YW4gNjU1MTYiKTsNCj4+Pj4gLXN0YXRpYyBzdHJ1Y3QgdGNwX2J1Zl9zZXFfdXBkYXRlIHRjcDZf c2VxX3VwZGF0ZVtUQ1BfRlJBTUVTX01FTV07DQo+Pj4+ICsvKiBSZWZlcmVuY2VzIHRyYWNraW5n IHRoZSBvd25lciBjb25uZWN0aW9uIG9mIGZyYW1lcyBpbiB0aGUgdGFwIG91dHF1ZXVlICovDQo+ Pj4+ICtzdGF0aWMgc3RydWN0IHRjcF90YXBfY29ubiAqdGNwNl9mcmFtZV9jb25uc1tUQ1BfRlJB TUVTX01FTV07DQo+Pj4+ICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgdGNwNl9wYXlsb2FkX3VzZWQ7 DQo+Pj4+ICAgIHN0YXRpYyBzdHJ1Y3QgdGFwX2hkcgkJdGNwNl9mbGFnc190YXBfaGRyW1RDUF9G UkFNRVNfTUVNXTsNCj4+Pj4gQEAgLTEyNjEsMjUgKzEyNTMsNDkgQEAgc3RhdGljIHZvaWQgdGNw X2ZsYWdzX2ZsdXNoKGNvbnN0IHN0cnVjdCBjdHggKmMpDQo+Pj4+ICAgIAl0Y3A0X2ZsYWdzX3Vz ZWQgPSAwOw0KPj4+PiAgICB9DQo+Pj4+ICsvKioNCj4+Pj4gKyAqIHRjcF9yZXZlcnRfc2VxKCkg LSBSZXZlcnQgYWZmZWN0ZWQgY29ubi0+c2VxX3RvX3RhcCBhZnRlciBmYWlsZWQgdHJhbnNtaXNz aW9uDQo+Pj4+ICsgKiBAY29ubnM6ICAgICAgIEFycmF5IG9mIGNvbm5lY3Rpb24gcG9pbnRlcnMg Y29ycmVzcG9uZGluZyB0byBxdWV1ZWQgZnJhbWVzDQo+Pj4+ICsgKiBAZnJhbWVzOiAgICAgIFR3 by1kaW1lbnNpb25hbCBhcnJheSBjb250YWluaW5nIHF1ZXVlZCBmcmFtZXMgd2l0aCBzdWItaW92 cw0KPj4+IFlvdSBjYW4gbWFrZSB0aGUgMmQgYXJyYXkgZXhwbGljaXQgaW4gdGhlIHR5cGUgYXM6 DQo+Pj4gCXN0cnVjdCBpb3ZlYyAoKmZyYW1lcylbVENQX05VTV9JT1ZTXTsNCj4+PiBTZWUsIGZv ciBleGFtcGxlIHRoZSAndGFwX2lvdicgbG9jYWwgaW4gdWRwX3RhcF9zZW5kKCkuICAgKEkgcmVj b21tZW5kDQo+Pj4gdGhlIGNvbW1hbmQgbGluZSB0b29sICdjZGVjbCcsIGFsc28gYXZhaWxhYmxl IG9ubGluZSBhdCBjZGVjbC5vcmcgZm9yDQo+Pj4gd29ya2luZyBvdXQgY29uZnVzaW5nIHBvaW50 ZXItdG8tYXJyYXkgdHlwZXMpLg0KPj4gTmljZS4gScKgIHdhc24ndCBxdWl0ZSBoYXBweSB3aXRo IHRoaXMuDQo+Pj4+ICsgKiBAbnVtX2ZyYW1lczogIE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSB0 d28gYXJyYXlzIHRvIGJlIGNvbXBhcmVkDQo+Pj4+ICsgKi8NCj4+Pj4gK3N0YXRpYyB2b2lkIHRj cF9yZXZlcnRfc2VxKHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKipjb25ucywgc3RydWN0IGlvdmVjICpm cmFtZXMsDQo+Pj4+ICsJCQkgICBpbnQgbnVtX2ZyYW1lcykNCj4+Pj4gK3sNCj4+Pj4gKwlpbnQg YywgZjsNCj4+Pj4gKw0KPj4+PiArCWZvciAoYyA9IDAsIGYgPSAwOyBjIDwgbnVtX2ZyYW1lczsg YysrLCBmICs9IFRDUF9OVU1fSU9WUykgew0KPj4+IE5pdDogSSBmaW5kIGhhdmluZyB0aGUgdHdv IHBhcmFsbGVsIGNvdW50ZXJzIGtpbmQgb2YgY29uZnVzaW5nLiAgSXQNCj4+PiBuYXR1cmFsbHkg Z29lcyBhd2F5IHdpdGggdGhlIHR5cGUgY2hhbmdlIHN1Z2dlc3RlZCBhYm92ZSwgYnV0IGV2ZW4N Cj4+PiB3aXRob3V0IHRoYXQgSSdkIHByZWZlciBhbiBleHBsaWNpdCBtdWx0aXBseSBpbiB0aGUg Ym9keS4gIEkgc3Ryb25nbHkNCj4+PiBzdXNwZWN0IHRoZSBjb21waWxlciB3aWxsIGJlIGJldHRl ciBhdCB3b3JraW5nIG91dCBpZiB0aGUgc3RyZW5ndGgNCj4+PiByZWR1Y3Rpb24gaXMgd29ydGgg aXQuDQo+Pj4NCj4+Pj4gKwkJc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiA9IGNvbm5zW2NdOw0K Pj4+PiArCQlzdHJ1Y3QgdGNwaGRyICp0aCA9IGZyYW1lc1tmICsgVENQX0lPVl9QQVlMT0FEXS5p b3ZfYmFzZTsNCj4+Pj4gKwkJdWludDMyX3Qgc2VxID0gbnRvaGwodGgtPnNlcSk7DQo+Pj4+ICsN Cj4+Pj4gKwkJaWYgKFNFUV9MRShjb25uLT5zZXFfdG9fdGFwLCBzZXEpKQ0KPj4+IElzbid0IHRo aXMgdGVzdCBpbnZlcnRlZD8gIFdlIHdhbnQgdG8gcmV3aW5kIHNlcV90b190YXAgaWYgc2VxIGlz IGxlc3MNCj4+PiB0aGFuIGl0LCByYXRoZXIgdGhhbiB0aGUgb3RoZXIgd2F5IGFydW9uZC4NCj4+ IE5vLiBXZSBkbyAnY29udGludWUnLCBpLmUuLCBub3RoaW5nLCBpZiB0aGlzIGNvbmRpdGlvbiBp cyBmdWxmaWxsZWQuDQo+PiBUaGlzIG1heSBsb29rIGEgbGl0dGxlIG5vbi1pbnR1aXRpdmUgaGVy ZSwgYnV0IG1ha2VzIHNlbnNlIHdoZW4gSSBhZGQgdGhlDQo+PiBuZXh0IHBhdGNoLg0KPiBPaCwg b2YgY291cnNlLCBteSBtaXN0YWtlLg0KPg0KDQpUaGUgY29kZSBub3cgKHY3KSBsb29rcyBhcyBm b2xsb3dzOg0KDQovKioNCiDCoCogdGNwX3JldmVydF9zZXEoKSAtIFJldmVydCBhZmZlY3RlZCBj b25uLT5zZXFfdG9fdGFwIGFmdGVyIGZhaWxlZCANCnRyYW5zbWlzc2lvbg0KIMKgKiBAY29ubnM6 wqDCoMKgwqDCoMKgIEFycmF5IG9mIGNvbm5lY3Rpb24gcG9pbnRlcnMgY29ycmVzcG9uZGluZyB0 byBxdWV1ZWQgDQpmcmFtZXMNCiDCoCogQGZyYW1lczrCoMKgwqDCoMKgIFR3by1kaW1lbnNpb25h bCBhcnJheSBjb250YWluaW5nIHF1ZXVlZCBmcmFtZXMgd2l0aCANCnN1Yi1pb3ZzDQogwqAqIEBu dW1fZnJhbWVzOsKgIE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSB0d28gYXJyYXlzIHRvIGJlIGNv bXBhcmVkDQogwqAqLw0Kc3RhdGljIHZvaWQgdGNwX3JldmVydF9zZXEoc3RydWN0IHRjcF90YXBf Y29ubiAqKmNvbm5zLCBzdHJ1Y3QgaW92ZWMgDQooKmZyYW1lcylbVENQX05VTV9JT1ZTXSwNCiDC oMKgwqDCoMKgwqDCoCDCoCDCoMKgwqDCoMKgIMKgIMKgwqDCoMKgwqDCoMKgwqAgaW50IG51bV9m cmFtZXMpDQp7DQogwqDCoMKgwqDCoMKgwqAgaW50IGk7DQoNCiDCoMKgwqDCoMKgwqDCoCBmb3Ig KGkgPSAwOyBpIDwgbnVtX2ZyYW1lczsgaSsrKSB7DQogwqDCoMKgwqDCoMKgwqAgwqAgwqDCoMKg wqDCoCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uID0gY29ubnNbaV07DQogwqDCoMKgwqDCoMKg wqAgwqAgwqDCoMKgwqDCoCBzdHJ1Y3QgdGNwaGRyICp0aCA9IGZyYW1lc1tpXVtUQ1BfSU9WX1BB WUxPQURdLmlvdl9iYXNlOw0KIMKgwqDCoMKgwqDCoMKgIMKgIMKgwqDCoMKgwqAgdWludDMyX3Qg c2VxID0gbnRvaGwodGgtPnNlcSk7DQoNCiDCoMKgwqDCoMKgwqDCoCDCoCDCoMKgwqDCoMKgIGlm IChTRVFfTEUoY29ubi0+c2VxX3RvX3RhcCwgc2VxKSkNCiDCoMKgwqDCoMKgwqDCoCDCoCDCoMKg wqDCoMKgIMKgIMKgwqDCoMKgwqAgY29udGludWU7DQoNCiDCoMKgwqDCoMKgwqDCoCDCoCDCoMKg wqDCoMKgIGNvbm4tPnNlcV90b190YXAgPSBzZXE7DQogwqDCoMKgwqDCoMKgwqAgwqAgwqDCoMKg wqDCoCB0Y3Bfc2V0X3BlZWtfb2Zmc2V0KGNvbm4tPnNvY2ssIHNlcSAtIA0KY29ubi0+c2VxX2Fj a19mcm9tX3RhcCk7DQogwqDCoMKgwqDCoMKgwqAgfQ0KfQ0KDQovKioNCiDCoCogdGNwX3BheWxv YWRfZmx1c2goKSAtIFNlbmQgb3V0IGJ1ZmZlcnMgZm9yIHNlZ21lbnRzIHdpdGggZGF0YQ0KIMKg KiBAYzrCoCDCoCDCoMKgwqDCoMKgIEV4ZWN1dGlvbiBjb250ZXh0DQogwqAqLw0Kc3RhdGljIHZv aWQgdGNwX3BheWxvYWRfZmx1c2goY29uc3Qgc3RydWN0IGN0eCAqYykNCnsNCiDCoMKgwqDCoMKg wqDCoCBzaXplX3QgbTsNCg0KIMKgwqDCoMKgwqDCoMKgIG0gPSB0YXBfc2VuZF9mcmFtZXMoYywg JnRjcDZfbDJfaW92WzBdWzBdLCBUQ1BfTlVNX0lPVlMsDQogwqDCoMKgwqDCoMKgwqAgwqAgwqDC oMKgwqDCoCDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgdGNwNl9wYXlsb2FkX3VzZWQpOw0KIMKgwqDC oMKgwqDCoMKgIGlmIChtICE9IHRjcDZfcGF5bG9hZF91c2VkKSB7DQogwqDCoMKgwqDCoMKgwqAg wqAgwqDCoMKgwqDCoCB0Y3BfcmV2ZXJ0X3NlcSh0Y3A2X2ZyYW1lX2Nvbm5zLCAmdGNwNl9sMl9p b3ZbbV0sDQogwqDCoMKgwqDCoMKgwqAgwqAgwqDCoMKgwqDCoCDCoCDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdGNwNl9wYXlsb2FkX3VzZWQgLSBtKTsNCiDCoMKgwqDCoMKgwqDCoCB9DQogwqDC oMKgwqDCoMKgwqAgdGNwNl9wYXlsb2FkX3VzZWQgPSAwOw0KDQogwqDCoMKgwqDCoMKgwqAgbSA9 IHRhcF9zZW5kX2ZyYW1lcyhjLCAmdGNwNF9sMl9pb3ZbMF1bMF0sIFRDUF9OVU1fSU9WUywNCiDC oMKgwqDCoMKgwqDCoCDCoCDCoMKgwqDCoMKgIMKgIMKgwqDCoMKgwqDCoMKgwqDCoCB0Y3A0X3Bh eWxvYWRfdXNlZCk7DQogwqDCoMKgwqDCoMKgwqAgaWYgKG0gIT0gdGNwNF9wYXlsb2FkX3VzZWQp IHsNCiDCoMKgwqDCoMKgwqDCoCDCoCDCoMKgwqDCoMKgIHRjcF9yZXZlcnRfc2VxKHRjcDRfZnJh bWVfY29ubnMsICZ0Y3A0X2wyX2lvdlttXSwNCiDCoMKgwqDCoMKgwqDCoCDCoCDCoMKgwqDCoMKg IMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0Y3A0X3BheWxvYWRfdXNlZCAtIG0pOw0KIMKg wqDCoMKgwqDCoMKgIH0NCiDCoMKgwqDCoMKgwqDCoCB0Y3A0X3BheWxvYWRfdXNlZCA9IDA7DQp9 DQoNCldhcyB0aGlzIHRoZSB2ZXJzaW9uIHlvdSB3ZXJlIHRhbGtpbmcgYWJvdXQgb24gTW9uZGF5 IG1vcm5pbmc/DQpEaWQgeW91IHNwb3Qgc29tZSBidWcgaGVyZSB3aGljaCBJIGFtIG1pc3Npbmc/ DQoNClRoYW5rcw0KLy8vam9uDQoNCg==