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.133.124]) by passt.top (Postfix) with ESMTP id 60F0B5A02E3 for ; Tue, 14 May 2024 22:19:21 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1715717960; 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=lyjwjn1hMpClLk84GUQ4kpTTp52nHoTI3nzUCdiBEnM=; b=Zs/GmuIx8vM51J5AVJVUTOHOtGnN8GkS7nQubsBdvl0OZoMruLYwmjM26uuGl5rrxzeFnt 37VV4wZYWHResQ2hGSBvyeSRTHvRYVzX46hskq3e2Zdl9JIG2RZeIiPB3ib1D53+Qlqp+u 5Nyg+fdwuw9iGCQhBA3l4619RiP+6LU= Received: from mail-oi1-f198.google.com (mail-oi1-f198.google.com [209.85.167.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-454-C6JhfMOTP7mmC15klf3U7g-1; Tue, 14 May 2024 16:19:18 -0400 X-MC-Unique: C6JhfMOTP7mmC15klf3U7g-1 Received: by mail-oi1-f198.google.com with SMTP id 5614622812f47-3c9992bad97so3729639b6e.0 for ; Tue, 14 May 2024 13:19:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715717958; x=1716322758; 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=lyjwjn1hMpClLk84GUQ4kpTTp52nHoTI3nzUCdiBEnM=; b=cFGywxkq9FSLzbTjKP1PlCKCtOM4YLGcLaS1zJcnUSnqLZ8sPP8PtVTT54d2uu9RSL yVqPuXqOzan/Hf36TaAWN6gENKGFE394/vYFGVBSlc+jUwDP3ujwefLIBW30iRdsK3o0 K8CVj9Tx+RQDQNntNHL1BWw9g27PZ0nyoJ/CD3prdbw1AL8PmUaPibsIxDPU9V1jh89H VMn6cknaKuDHqcC/gN/fhheaYWEuRjbVxbrQC6whkmBvHtEi2l2FPLkHEOmFjea3NhJ8 JO4UTRhIu5KmWt64HrFufQAbQ/7MzcU5YFBxSeteFEfINh8aoeLhaFldZvGQvZUAyf1b DtqQ== X-Gm-Message-State: AOJu0Yzymx5JmgY2jzWUcIqC3sL4Fu3x40F1h1E3tXB3VkXXfUccixMq x7622OoXwN2t3zjUstYTA9Pu/92ETrdTx/APCKIpAjcH1Rop2+SV8Clh3PR5pmj6foktcgg9OGZ tC64balZYynSHYisjmj6AJspx8a8xHiqqGY9DBPoC9RIiKnzZdjtZ3sAZBzXo X-Received: by 2002:aca:180d:0:b0:3c9:9698:e938 with SMTP id 5614622812f47-3c9971dd307mr16369953b6e.52.1715717957900; Tue, 14 May 2024 13:19:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG+RWvr6XEKgODzdddaPQd1ha9Od+UxzCbm0q2JETKtVEu2TFWG+3d7Rw2MFcB1u1vnw8Aj4w== X-Received: by 2002:aca:180d:0:b0:3c9:9698:e938 with SMTP id 5614622812f47-3c9971dd307mr16369929b6e.52.1715717957393; Tue, 14 May 2024 13:19:17 -0700 (PDT) Received: from [10.0.0.97] ([24.225.234.80]) by smtp.gmail.com with ESMTPSA id af79cd13be357-792bf27f847sm601626185a.29.2024.05.14.13.19.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 14 May 2024 13:19:17 -0700 (PDT) Message-ID: Date: Tue, 14 May 2024 16:19:16 -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 v3 3/3] tcp: allow retransmit when peer receive window is zero To: Stefano Brivio References: <20240511152008.421750-1-jmaloy@redhat.com> <20240511152008.421750-4-jmaloy@redhat.com> <20240514194650.53b433f9@elisabeth> From: Jon Maloy In-Reply-To: <20240514194650.53b433f9@elisabeth> 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: 5DGAMKNIOE7YAYGKGFRN6NXUZ2CX2ZA3 X-Message-ID-Hash: 5DGAMKNIOE7YAYGKGFRN6NXUZ2CX2ZA3 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, 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: DQoNCk9uIDIwMjQtMDUtMTQgMTM6NDYsIFN0ZWZhbm8gQnJpdmlvIHdyb3RlOg0KPiBPbiBTYXQs IDExIE1heSAyMDI0IDExOjIwOjA4IC0wNDAwDQo+IEpvbiBNYWxveSA8am1hbG95QHJlZGhhdC5j b20+IHdyb3RlOg0KPg0KPj4gQSBidWcgaW4ga2VybmVsIFRDUCBtYXkgbGVhZCB0byBhIGRlYWRs b2NrIHdoZXJlIGEgemVybyB3aW5kb3cgaXMgc2VudA0KPj4gZnJvbSB0aGUgcGVlciwgd2hpbGUg aXQgaXMgdW5hYmxlIHRvIHNlbmQgb3V0IHdpbmRvdyB1cGRhdGVzIGV2ZW4gYWZ0ZXINCj4+IHJl YWRzIGhhdmUgZnJlZWQgdXAgZW5vdWdoIGJ1ZmZlciBzcGFjZSB0byBwZXJtaXQgYSBsYXJnZXIg d2luZG93Lg0KPj4gSW4gdGhpcyBzaXR1YXRpb24sIG5ldyB3aW5kb3cgYWR2ZXJ0aXNlbW50cyBm cm9tIHRoZSBwZWVyIGNhbiBvbmx5IGJlDQo+PiB0cmlnZ2VyZWQgYnkgcGFja2V0cyBhcnJpdmlu ZyBmcm9tIHRoaXMgc2lkZS4NCj4+DQo+PiBIb3dldmVyLCBzdWNoIHBhY2tldHMgYXJlIG5ldmVy IHNlbnQsIGJlY2F1c2UgdGhlIHplcm8td2luZG93IGNvbmRpdGlvbg0KPj4gY3VycmVudGx5IHBy ZXZlbnRzIHRoaXMgc2lkZSBmcm9tIHNlbmRpbmcgb3V0IGFueSBwYWNrZXRzIHdoYXRzb2V2ZXIN Cj4+IHRvIHRoZSBwZWVyLg0KPj4NCj4+IFdlIG5vdGljZSB0aGF0IHRoZSBhYm92ZSBidWcgaXMg dHJpZ2dlcmVkICpvbmx5KiBhZnRlciB0aGUgcGVlciBoYXMNCj4+IGRyb3BwZWQgYW4gYXJyaXZp bmcgcGFja2V0IGJlY2F1c2Ugb2Ygc2V2ZXJlIG1lbW9yeSBzcXVlZXplLCBhbmQgdGhhdCB3ZQ0K Pj4gaGVuY2UgYWx3YXlzIGVudGVyIGEgcmV0cmFuc21pc3Npb24gc2l0dWF0aW9uIHdoZW4gdGhp cyBvY2N1cnMuIFRoaXMNCj4+IGFsc28gbWVhbnMgdGhhdCBpdCBnb2VzIGFnYWluc3QgdGhlIFJG QyA5MjkzIHJlY29tbWVuZGF0aW9uIHRoYXQgYQ0KPj4gcHJldmlvdXNseSBhZHZlcnRpc2VkIHdp bmRvdyBuZXZlciBzaG91bGQgc2hyaW5rLg0KPj4NCj4+IFJGQyA5MjkzIGdpdmVzIHRoZSBzb2x1 dGlvbiB0byB0aGlzIHNpdHVhdGlvbi4gSW4gY2hhcHRlciAzLjYuMSB3ZSBmaW5kDQo+PiB0aGUg Zm9sbG93aW5nIHN0YXRlbWVudDoNCj4+ICJBIFRDUCByZWNlaXZlciBTSE9VTEQgTk9UIHNocmlu ayB0aGUgd2luZG93LCBpLmUuLCBtb3ZlIHRoZSByaWdodA0KPj4gd2luZG93IGVkZ2UgdG8gdGhl IGxlZnQgKFNITEQtMTQpLiBIb3dldmVyLCBhIHNlbmRpbmcgVENQIHBlZXIgTVVTVA0KPj4gYmUg cm9idXN0IGFnYWluc3Qgd2luZG93IHNocmlua2luZywgd2hpY2ggbWF5IGNhdXNlIHRoZQ0KPj4g InVzYWJsZSB3aW5kb3ciIChzZWUgU2VjdGlvbiAzLjguNi4yLjEpIHRvIGJlY29tZSBuZWdhdGl2 ZSAoTVVTVC0zNCkuDQo+Pg0KPj4gSWYgdGhpcyBoYXBwZW5zLCB0aGUgc2VuZGVyIFNIT1VMRCBO T1Qgc2VuZCBuZXcgZGF0YSAoU0hMRC0xNSksIGJ1dA0KPj4gU0hPVUxEIHJldHJhbnNtaXQgbm9y bWFsbHkgdGhlIG9sZCB1bmFja25vd2xlZGdlZCBkYXRhIGJldHdlZW4gU05ELlVOQQ0KPj4gYW5k IFNORC5VTkErU05ELldORCAoU0hMRC0xNikuIFRoZSBzZW5kZXIgTUFZIGFsc28gcmV0cmFuc21p dCBvbGQgZGF0YQ0KPj4gYmV5b25kIFNORC5VTkErU05ELldORCAoTUFZLTcpIg0KPj4NCj4+IFdl IG5ldmVyIHNlZSB0aGUgd2luZG93IGJlY29tZSBuZWdhdGl2ZSwgYnV0IHdlIGludGVycHJldCB0 aGlzIGFzIGENCj4+IHJlY29tbWVuZGF0aW9uIHRvIHVzZSB0aGUgcHJldmlvdXNseSBhdmFpbGFi bGUgd2luZG93IGR1cmluZw0KPj4gcmV0cmFuc21pc3Npb24gZXZlbiB3aGVuIHRoZSBjdXJyZW50 bHkgYWR2ZXJ0aXNlZCB3aW5kb3cgaXMgemVyby4NCj4+DQo+PiBJbiBjYXNlIG9mIGEgemVyby13 aW5kb3cgbm9uLXJldHJhbnNtaXNzaW9uIHNpdHVhdGlvbiB3aGVyZSB0aGVyZQ0KPj4gaXMgbm8g bmV3IGRhdGEgdG8gYmUgc2VudCwgd2UgYWxzbyBhZGQgYSBzaW1wbGUgemVyby13aW5kb3cgcHJv YmluZw0KPj4gZmVhdHVyZS4gQnkgc2VuZGluZyBhbiBlbXB0eSBwYWNrZXQgYXQgcmVndWxhciB0 aW1lb3V0IGV2ZW50cyB3ZQ0KPj4gcmVzb2x2ZSB0aGUgc2l0dWF0aW9uIGRlc2NyaWJlZCBhYm92 ZSwgc2luY2UgdGhlIHBlZXIgcmVjZWl2ZXMgdGhlDQo+PiBuZWNlc3NhcnkgdHJpZ2dlciB0byBh ZHZlcnRpc2UgaXRzIHdpbmRvdyBvbmNlIGl0IGJlY29tZXMgbm9uLXplcm8NCj4+IGFnYWluLg0K Pj4NCj4+IEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IGFsdGhvdWdoIHRoaXMgc29sdmVzIHRoZSBw cm9ibGVtIHdlIGhhdmUgYXQNCj4+IGhhbmQsIGl0IGlzIG5vdCBhIGdlbnVpbmUgc29sdXRpb24g dG8gdGhlIGtlcm5lbCBidWcuIFRoZXJlIG1heSB3ZWxsDQo+PiBiZSBUQ1Agc3RhY2tzIGFyb3Vu ZCBpbiBvdGhlciBPUy1lcyB3aGljaCBkb24ndCBkbyB0aGlzLCBub3IgaGF2ZQ0KPj4ga2VlcC1h bGl2ZSBwcm9iaW5nIGFzIGFuIGFsdGVybmF0dmUgd2F5IHRvIHNvbHZlIHRoZSBzaXR1YXRpb24u DQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogSm9uIE1hbG95IDxqbWFsb3lAcmVkaGF0LmNvbT4NCj4+ DQo+PiAtLS0NCj4+IHYyOiAtIFVzaW5nIHByZXZpb3VzbHkgYWR2ZXJ0aXNlZCB3aW5kb3cgZHVy aW5nIHJldHJhbnNtaXNzaW9uLCBpbnN0ZWFkDQo+PiAgICAgICAgaGlnaGVzdCBzZW5kIHNlcXVl bmNlY2UgbnVtYmVyIGluIHRoZSBjeWNsZS4NCj4+IHYzOiAtIFJlYmFzZWQgdG8gbmV3ZXN0IGNv ZGUNCj4+ICAgICAgLSBDaGFuZ2VzIGJhc2VkIG9uIGZlZWRiYWNrIGZyb20gUEFTU1QgdGVhbQ0K Pj4gICAgICAtIFNlbmRpbmcgb3V0IGVtcHR5IHByb2JlIG1lc3NhZ2UgYXQgdGltZXIgZXhwaXJh dGlvbiB3aGVuDQo+PiAgICAgICAgd2UgYXJlIG5vdCBpbiByZXRyYW5zbWl0IHNpdHVhdGlvbi4N Cj4+IC0tLQ0KPj4gICB0Y3AuYyAgICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tDQo+PiAgIHRjcF9jb25uLmggfCAgMiArKw0KPj4gICAyIGZpbGVzIGNoYW5nZWQsIDIzIGlu c2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL3RjcC5jIGIv dGNwLmMNCj4+IGluZGV4IDgyOTc4MTIuLmJkNmJmMzUgMTAwNjQ0DQo+PiAtLS0gYS90Y3AuYw0K Pj4gKysrIGIvdGNwLmMNCj4+IEBAIC0xNzc0LDkgKzE3NzQsMTUgQEAgc3RhdGljIHZvaWQgdGNw X2dldF90YXBfd3Moc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiwNCj4+ICAgICovDQo+PiAgIHN0 YXRpYyB2b2lkIHRjcF90YXBfd2luZG93X3VwZGF0ZShzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25u LCB1bnNpZ25lZCB3bmQpDQo+PiAgIHsNCj4+ICsJdWludDMyX3Qgd25kX3VwcGVyOw0KPj4gKw0K Pj4gICAJd25kID0gTUlOKE1BWF9XSU5ET1csIHduZCA8PCBjb25uLT53c19mcm9tX3RhcCk7DQo+ PiAgIAljb25uLT53bmRfZnJvbV90YXAgPSBNSU4od25kID4+IGNvbm4tPndzX2Zyb21fdGFwLCBV U0hSVF9NQVgpOw0KPj4gICANCj4+ICsJd25kX3VwcGVyID0gY29ubi0+c2VxX2Fja19mcm9tX3Rh cCArIHduZDsNCj4+ICsJaWYgKHduZCAmJiBTRVFfR1Qod25kX3VwcGVyLCBjb25uLT5zZXFfd3Vw X2Zyb21fdGFwKSkNCj4+ICsJCWNvbm4tPnNlcV93dXBfZnJvbV90YXAgPSB3bmRfdXBwZXI7DQo+ PiArDQo+PiAgIAkvKiBGSVhNRTogcmVmbGVjdCB0aGUgdGFwLXNpZGUgcmVjZWl2ZXIncyB3aW5k b3cgYmFjayB0byB0aGUgc29jay1zaWRlDQo+PiAgIAkgKiBzZW5kZXIgYnkgYWRqdXN0aW5nIFNP X1JDVkJVRj8gKi8NCj4+ICAgfQ0KPj4gQEAgLTE4MDksNiArMTgxNSw3IEBAIHN0YXRpYyB2b2lk IHRjcF9zZXFfaW5pdChjb25zdCBzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpj b25uLA0KPj4gICAJbnMgPSAobm93LT50dl9zZWMgKiAxMDAwMDAwMDAwICsgbm93LT50dl9uc2Vj KSA+PiA1Ow0KPj4gICANCj4+ICAgCWNvbm4tPnNlcV90b190YXAgPSAoKHVpbnQzMl90KShoYXNo ID4+IDMyKSBeICh1aW50MzJfdCloYXNoKSArIG5zOw0KPj4gKwljb25uLT5zZXFfd3VwX2Zyb21f dGFwID0gY29ubi0+c2VxX3RvX3RhcDsNCj4+ICAgfQ0KPj4gICANCj4+ICAgLyoqDQo+PiBAQCAt MjIyMCw3ICsyMjI3LDYgQEAgc3RhdGljIHZvaWQgdGNwX2RhdGFfdG9fdGFwKGNvbnN0IHN0cnVj dCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQo+PiAgICAqLw0KPj4gICBzdGF0 aWMgaW50IHRjcF9kYXRhX2Zyb21fc29jayhzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9j b25uICpjb25uKQ0KPj4gICB7DQo+PiAtCXVpbnQzMl90IHduZF9zY2FsZWQgPSBjb25uLT53bmRf ZnJvbV90YXAgPDwgY29ubi0+d3NfZnJvbV90YXA7DQo+PiAgIAlpbnQgZmlsbF9idWZzLCBzZW5k X2J1ZnMgPSAwLCBsYXN0X2xlbiwgaW92X3JlbSA9IDA7DQo+PiAgIAlpbnQgc2VuZGxlbiwgbGVu LCBkbGVuLCB2NCA9IENPTk5fVjQoY29ubik7DQo+PiAgIAl1aW50MzJfdCBtYXhfc2VuZCwgc2Vx LCBhbHJlYWR5X3NlbnQ7DQo+PiBAQCAtMjI0MSwxMCArMjI0NywxMSBAQCBzdGF0aWMgaW50IHRj cF9kYXRhX2Zyb21fc29jayhzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25u KQ0KPj4gICAJfQ0KPj4gICANCj4+ICAgCS8qIEhvdyBtdWNoIGFyZSB3ZSBzdGlsbCBhbGxvd2Vk IHRvIHNlbmQgd2l0aGluIGN1cnJlbnQgd2luZG93ID8gKi8NCj4+IC0JbWF4X3NlbmQgPSBjb25u LT5zZXFfYWNrX2Zyb21fdGFwICsgd25kX3NjYWxlZCAtIGNvbm4tPnNlcV90b190YXA7DQo+PiAr CW1heF9zZW5kID0gY29ubi0+c2VxX3d1cF9mcm9tX3RhcCAtIGNvbm4tPnNlcV90b190YXA7DQo+ PiAgIAlpZiAoU0VRX0xFKG1heF9zZW5kLCAwKSkgew0KPj4gLQkJZmxvd190cmFjZShjb25uLCAi RW1wdHkgd2luZG93OiB3aW46ICV1LCBzZW50OiAldSIsDQo+PiAtCQkJICAgd25kX3NjYWxlZCwg Y29ubi0+c2VxX3RvX3RhcCk7DQo+PiArCQlmbG93X3RyYWNlKGNvbm4sICJFbXB0eSB3aW5kb3c6 IHdpbl91cHBlcjogJXUsIHNlbnQ6ICV1IiwNCj4+ICsJCQkgICBjb25uLT5zZXFfd3VwX2Zyb21f dGFwLCBjb25uLT5zZXFfdG9fdGFwKTsNCj4+ICsJCWNvbm4tPnNlcV93dXBfZnJvbV90YXAgPSBj b25uLT5zZXFfdG9fdGFwOw0KPj4gICAJCWNvbm5fZmxhZyhjLCBjb25uLCBTVEFMTEVEKTsNCj4+ ICAgCQljb25uX2ZsYWcoYywgY29ubiwgQUNLX0ZST01fVEFQX0RVRSk7DQo+PiAgIAkJcmV0dXJu IDA7DQo+PiBAQCAtMjM4MCw3ICsyMzg3LDcgQEAgc3RhdGljIGludCB0Y3BfZGF0YV9mcm9tX3Rh cChzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3RhcF9jb25uICpjb25uLA0KPj4gICAJQVNTRVJU KGNvbm4tPmV2ZW50cyAmIEVTVEFCTElTSEVEKTsNCj4+ICAgDQo+PiAgIAlmb3IgKGkgPSBpZHgs IGlvdl9pID0gMDsgaSA8IChpbnQpcC0+Y291bnQ7IGkrKykgew0KPj4gLQkJdWludDMyX3Qgc2Vx LCBzZXFfb2Zmc2V0LCBhY2tfc2VxOw0KPj4gKwkJdWludDMyX3Qgc2VxLCBzZXFfb2Zmc2V0LCBh Y2tfc2VxLCB3bmQ7DQo+PiAgIAkJY29uc3Qgc3RydWN0IHRjcGhkciAqdGg7DQo+PiAgIAkJY2hh ciAqZGF0YTsNCj4+ICAgCQlzaXplX3Qgb2ZmOw0KPj4gQEAgLTI0MTMsMTEgKzI0MjAsMTIgQEAg c3RhdGljIGludCB0Y3BfZGF0YV9mcm9tX3RhcChzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3QgdGNwX3Rh cF9jb25uICpjb25uLA0KPj4gICAJCQlpZiAoU0VRX0dFKGFja19zZXEsIGNvbm4tPnNlcV9hY2tf ZnJvbV90YXApICYmDQo+PiAgIAkJCSAgICBTRVFfR0UoYWNrX3NlcSwgbWF4X2Fja19zZXEpKSB7 DQo+PiAgIAkJCQkvKiBGYXN0IHJlLXRyYW5zbWl0ICovDQo+PiArCQkJCXduZCA9IG50b2hzKHRo LT53aW5kb3cpOw0KPj4gICAJCQkJcmV0ciA9ICFsZW4gJiYgIXRoLT5maW4gJiYNCj4+ICAgCQkJ CSAgICAgICBhY2tfc2VxID09IG1heF9hY2tfc2VxICYmDQo+PiAtCQkJCSAgICAgICBudG9ocyh0 aC0+d2luZG93KSA9PSBtYXhfYWNrX3NlcV93bmQ7DQo+PiArCQkJCSAgICAgICAod25kID09IG1h eF9hY2tfc2VxX3duZCB8fCAhd25kKTsNCj4gSnVzdCBhcyBhIHJlbWluZGVyLCBhcyBJIG1lbnRp b25lZCBvbiBNb25kYXk6IHRoaXMgbWVhbnMgd2UnbGwNCj4gcmUtdHJhbnNtaXQgd2hlbmV2ZXIg d2UgZ2V0IGEgcHVyZSB3aW5kb3cgdXBkYXRlICghbGVuICYmICF0aC0+ZmluDQo+ICYmIGFja19z ZXEgPT0gbWF4X2Fja19zZXEpIHdpdGggYSB6ZXJvIHdpbmRvdy4gVGhlIHJlY2VpdmVyIGlzIHRl bGxpbmcNCj4gdXMgaXQgcmFuIG91dCBvZiBzcGFjZSwgYW5kIHdoYW0sIHdlIGZsb29kIHRoZW0s IGFzIGEgcHVuaXNobWVudC4NCj4NCj4gSSB3b3VsZCBsZXQgdGhpcyBjaGVjayBhbG9uZSwgYW5k IGp1c3QgYWRkIHplcm8td2luZG93IHByb2JpbmcsIHBsdXMNCj4gd2hhdGV2ZXIgcmV0cmFuc21p c3Npb24geW91IG1lbnRpb25lZCBmcm9tIHRoZSBSRkMgLS0gYnV0IG5vdCBhIGZhc3QNCj4gcmUt dHJhbnNtaXQgb24gYSB6ZXJvIHdpbmRvdy4NCkkgdGhpbmsgSSBoYXZlIGEgZ29vZCBpZGVhIGhl cmUuIEknbGwgdXNlIGl0IGluIG15IG5leHQgdmVyc2lvbi4NCg0KPg0KPj4gICANCj4+IC0JCQkJ bWF4X2Fja19zZXFfd25kID0gbnRvaHModGgtPndpbmRvdyk7DQo+PiArCQkJCW1heF9hY2tfc2Vx X3duZCA9IHduZDsNCj4+ICAgCQkJCW1heF9hY2tfc2VxID0gYWNrX3NlcTsNCj4+ICAgCQkJfQ0K Pj4gICAJCX0NCj4+IEBAIC0yNDgwLDggKzI0ODgsOSBAQCBzdGF0aWMgaW50IHRjcF9kYXRhX2Zy b21fdGFwKHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4sDQo+PiAgIA0K Pj4gICAJaWYgKHJldHIpIHsNCj4+ICAgCQlmbG93X3RyYWNlKGNvbm4sDQo+PiAtCQkJICAgImZh c3QgcmUtdHJhbnNtaXQsIEFDSzogJXUsIHByZXZpb3VzIHNlcXVlbmNlOiAldSIsDQo+PiAtCQkJ ICAgbWF4X2Fja19zZXEsIGNvbm4tPnNlcV90b190YXApOw0KPj4gKwkJCSAgICJmYXN0IHJlLXRy YW5zbWl0LCBzZXFubyAldSAtPiAldSwgd2luX3VwcGVyOiAldSIsDQo+PiArCQkJICAgY29ubi0+ c2VxX3RvX3RhcCwgbWF4X2Fja19zZXEsDQo+IEknbSBub3Qgc3VyZSBpZiAiLT4iIHJlYWxseSBj b252ZXlzIHRoZSBtZWFuaW5nIG9mICJ3ZSdyZSBzZW5kaW5nIHRoaXMNCj4gc2VxdWVuY2UgKmJl Y2F1c2UqIG9mIHRoYXQgYWNrbm93bGVkZ2VtZW50IG51bWJlciIuDQpJdCByZWFsbHkgbWVhbnMg IndlIGFyZSByZXdpbmRpbmcgc2VxX3RvX3RhcCBmcm9tIFggdG8gWSIuwqAgVGhhdCBpdCBpcyAN CmNhdXNlZCBieSBhDQpkdXBsaWNhdGUgYWNrIGlzIGltcGxpY2l0Lg0KPiBJIHdvdWxkIHJhdGhl ciBrZWVwDQo+IHRoZSByZWNlaXZlZCBhY2tub3dsZWRnZWQgc2VxdWVuY2UgYmVmb3JlIGV2ZXJ5 dGhpbmcgZWxzZSwgYmVjYXVzZQ0KPiB0aGF0J3MgdGhlIGNhdXNhbCB0cmlnZ2VyIGZvciB0aGUg cmV0cmFuc21pc3Npb24uDQo+DQo+PiArCQkJICAgY29ubi0+c2VxX3d1cF9mcm9tX3RhcCk7DQo+ PiAgIA0KPj4gICAJCWNvbm4tPnNlcV90b190YXAgPSBtYXhfYWNrX3NlcTsNCj4+ICAgCQl0Y3Bf c2V0X3BlZWtfb2Zmc2V0KGNvbm4tPnNvY2ssIDApOw0KPj4gQEAgLTI5MzEsNiArMjk0MCw5IEBA IHZvaWQgdGNwX3RpbWVyX2hhbmRsZXIoc3RydWN0IGN0eCAqYywgdW5pb24gZXBvbGxfcmVmIHJl ZikNCj4+ICAgCQkJZmxvd19kYmcoY29ubiwgImFjdGl2aXR5IHRpbWVvdXQiKTsNCj4+ICAgCQkJ dGNwX3JzdChjLCBjb25uKTsNCj4+ICAgCQl9DQo+PiArCQkvKiBObyBkYXRhIHNlbnQgcmVjZW50 bHk/IEtlZXAgY29ubmVjdGlvbiBhbGl2ZS4gKi8NCj4+ICsJCWlmIChjb25uLT5zZXFfdG9fdGFw ID09IGNvbm4tPnNlcV9hY2tfZnJvbV90YXApDQo+PiArCQkJdGNwX3NlbmRfZmxhZyhjLCBjb25u LCBBQ0tfSUZfTkVFREVEKTsNCj4gSWYgdGhlIHdpbmRvdyBpcyB6ZXJvLCB0aGlzIHdvbid0IHNl bmQgYW55dGhpbmcsIHNlZSB0aGUgZmlyc3QNCj4gY29uZGl0aW9uIGluIHRjcF9zZW5kX2ZsYWco KS4gQUNLX0lGX05FRURFRCBpbXBsaWVzIHRoYXQgdGhhdCBmdW5jdGlvbg0KPiBzaG91bGQgcXVl dWUgYW4gQUNLIHNlZ21lbnQgaWYgd2UgaGF2ZSBkYXRhIHRvIGFja25vd2xlZGdlLg0KT2suIEkg bWlzc2VkIHRoYXQuDQo+IEhlcmUsIHRoZSBmbGFnIHlvdSB3YW50IGlzIHNpbXBseSAnQUNLJy4g QnV0IHdlIHNob3VsZCBtYWtlIHN1cmUgdGhhdA0KPiB0aGlzIGNhbid0IGJlIHRha2VuIGFzIGEg ZHVwbGljYXRlIEFDSywgdGhhdCBpcywgd2Ugc2hvdWxkIG9ubHkgc2VuZA0KPiB0aGlzIGlmIHNl cV9hY2tfdG9fdGFwID09IHNlcV9mcm9tX3RhcC4NCj4NCj4gT3RoZXJ3aXNlLCB3ZSBzaG91bGRu J3Qgc2VuZCBhbnl0aGluZywgbGVzdCB0aGUgcGVlciByZXRyYW5zbWl0DQo+IGFueXRoaW5nIHRo YXQgd2UgZGlkbid0IGFja25vd2xlZGdlIHlldC4NCkJ1dCB0aGVuIHdlIGhhdmUgbm8gcHJvYmlu Zy4uLiBXYXNuJ3QgdGhhdCB0aGUgd2hvbGUgcGludCBvZiB0aGlzPw0KPg0KPj4gICAJfQ0KPj4g ICB9DQo+PiAgIA0KPj4gZGlmZiAtLWdpdCBhL3RjcF9jb25uLmggYi90Y3BfY29ubi5oDQo+PiBp bmRleCBkMjgwYjIyLi44YWUyMGVmIDEwMDY0NA0KPj4gLS0tIGEvdGNwX2Nvbm4uaA0KPj4gKysr IGIvdGNwX2Nvbm4uaA0KPj4gQEAgLTMwLDYgKzMwLDcgQEANCj4+ICAgICogQHduZF90b190YXA6 CQlTZW5kaW5nIHdpbmRvdyBhZHZlcnRpc2VkIHRvIHRhcCwgdW5zY2FsZWQgKGFzIHNlbnQpDQo+ PiAgICAqIEBzZXFfdG9fdGFwOgkJTmV4dCBzZXF1ZW5jZSBmb3IgcGFja2V0cyB0byB0YXANCj4+ ICAgICogQHNlcV9hY2tfZnJvbV90YXA6CUxhc3QgQUNLIG51bWJlciByZWNlaXZlZCBmcm9tIHRh cA0KPj4gKyAqIEBzZXFfd3VwX2Zyb21fdGFwOglSaWdodCBlZGdlIG9mIGxhc3Qgbm9uLXplcm8g d2luZG93IGZyb20gdGFwDQo+ICJSaWdodCBlZGdlIiBtYWtlcyBtdWNoIG1vcmUgc2Vuc2UgdG8g bWUsIGFuZCBpdCBhbHNvIG1hdGNoZXMgUkZDDQo+IGxhbmd1YWdlLiBDb3VsZCB3ZSB0dXJuIGFs bCB0aGUgInd1cCIgYW5kICJ1cHBlciIgcmVmZXJlbmNlcyBpbnRvDQo+IHNvbWV0aGluZyBsaWtl ICJlZGdlIiBvciAicmlnaHRfZWRnZSI/DQpJIHRyaWVkIHRvIGNvbWUgdXAgd2l0aCBzb21ldGhp bmcgc2hvcnQsIGJlY2F1c2UgdGhlIGZpZWxkIG5hbWUgYmVjb21lcw0KaW1wcmFjdGljYWxseSBs b25nLiBJIGFtIG9wZW4gdG8gc3VnZ2VzdGlvbnMuDQoNCi8vL2pvbg0KPg0KPj4gICAgKiBAc2Vx X2Zyb21fdGFwOglOZXh0IHNlcXVlbmNlIGZvciBwYWNrZXRzIGZyb20gdGFwIChub3QgYWN0dWFs bHkgc2VudCkNCj4+ICAgICogQHNlcV9hY2tfdG9fdGFwOglMYXN0IEFDSyBudW1iZXIgc2VudCB0 byB0YXANCj4+ICAgICogQHNlcV9pbml0X2Zyb21fdGFwOglJbml0aWFsIHNlcXVlbmNlIG51bWJl ciBmcm9tIHRhcA0KPj4gQEAgLTEwMSw2ICsxMDIsNyBAQCBzdHJ1Y3QgdGNwX3RhcF9jb25uIHsN Cj4+ICAgDQo+PiAgIAl1aW50MzJfdAlzZXFfdG9fdGFwOw0KPj4gICAJdWludDMyX3QJc2VxX2Fj a19mcm9tX3RhcDsNCj4+ICsJdWludDMyX3QJc2VxX3d1cF9mcm9tX3RhcDsNCj4+ICAgCXVpbnQz Ml90CXNlcV9mcm9tX3RhcDsNCj4+ICAgCXVpbnQzMl90CXNlcV9hY2tfdG9fdGFwOw0KPj4gICAJ dWludDMyX3QJc2VxX2luaXRfZnJvbV90YXA7DQoNCg==