From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Fxshh-0004v0-HO for qemu-devel@nongnu.org; Tue, 04 Jul 2006 17:45:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Fxshg-0004tq-EJ for qemu-devel@nongnu.org; Tue, 04 Jul 2006 17:45:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Fxshg-0004td-7P for qemu-devel@nongnu.org; Tue, 04 Jul 2006 17:45:08 -0400 Received: from [64.233.182.185] (helo=nf-out-0910.google.com) by monty-python.gnu.org with esmtp (Exim 4.52) id 1FxsvQ-0006eJ-Vv for qemu-devel@nongnu.org; Tue, 04 Jul 2006 17:59:21 -0400 Received: by nf-out-0910.google.com with SMTP id a4so1121815nfc for ; Tue, 04 Jul 2006 14:45:06 -0700 (PDT) Message-ID: Date: Wed, 5 Jul 2006 01:45:06 +0400 From: "Igor Kovalenko" Subject: Re: [Qemu-devel] qemu/hw rtl8139.c In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_55261_7804153.1152049506531" References: Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_55261_7804153.1152049506531 Content-Type: multipart/alternative; boundary="----=_Part_55262_134560.1152049506531" ------=_Part_55262_134560.1152049506531 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi! Here is the remaining part of task offloading features of rtl8139 emulation - the TCP segmentation offloading. Tested with linux (ethtool -K eth0 tx on sg on tso on). Please apply. I'll try to provide slirp separation later. -- Kind Regards, Igor V. Kovalenko ------=_Part_55262_134560.1152049506531 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi!

Here is the remaining part of task offloading features of rtl8139 emulation - the TCP segmentation offloading.
Tested with linux (ethtool -K eth0 tx on sg on tso on).

Please apply.

I'll try to provide slirp separation later.

--
Kind Regards,
Igor V. Kovalenko

------=_Part_55262_134560.1152049506531-- ------=_Part_55261_7804153.1152049506531 Content-Type: text/x-patch; name=rtl8139-20060705-1.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ep8scq98 Content-Disposition: attachment; filename="rtl8139-20060705-1.diff" SW5kZXg6IGh3L3J0bDgxMzkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9xZW11L3Fl bXUvaHcvcnRsODEzOS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtdSAtcjEuMyBy dGw4MTM5LmMKLS0tIGh3L3J0bDgxMzkuYwk0IEp1bCAyMDA2IDEwOjA4OjM2IC0wMDAwCTEuMwor KysgaHcvcnRsODEzOS5jCTQgSnVsIDIwMDYgMjE6Mzg6NTUgLTAwMDAKQEAgLTMzLDYgKzMzLDkg QEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcGxlbWVudGVkIFBDSSB0 aW1lciBpbnRlcnJ1cHQgKGRpc2FibGVkIGJ5IGRlZmF1bHQpCiAgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbXBsZW1lbnRlZCBUYWxseSBDb3VudGVycywgaW5jcmVhc2VkIFZN IGxvYWQvc2F2ZSB2ZXJzaW9uCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bXBsZW1lbnRlZCBJUC9UQ1AvVURQIGNoZWNrc3VtIHRhc2sgb2ZmbG9hZGluZworICoKKyAqICAy MDA2LUp1bC0wNCAgSWdvciBLb3ZhbGVua28gOiAgIEltcGxlbWVudGVkIFRDUCBzZWdtZW50YXRp b24gb2ZmbG9hZGluZworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml4ZWQg TVRVPTE1MDAgZm9yIHByb2R1Y2VkIGV0aGVybmV0IGZyYW1lcwogICovCiAKICNpbmNsdWRlICJ2 bC5oIgpAQCAtMTczMiw2ICsxNzM1LDI1IEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGlj IHZvaWQgcnRsODEzOV90cmFuc2Zlcl9mcmFtZShSVEw4MTM5U3RhdGUgKnMsIGNvbnN0IHVpbnQ4 X3QgKmJ1ZiwgaW50IHNpemUsIGludCBkb19pbnRlcnJ1cHQpCit7CisgICAgaWYgKCFzaXplKQor ICAgIHsKKyAgICAgICAgREVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysgZW1wdHkgZXRoZXJuZXQg ZnJhbWVcbiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChUeExvb3BCYWNr ID09IChzLT5UeENvbmZpZyAmIFR4TG9vcEJhY2spKQorICAgIHsKKyAgICAgICAgREVCVUdfUFJJ TlQoKCJSVEw4MTM5OiArKysgdHJhbnNtaXQgbG9vcGJhY2sgbW9kZVxuIikpOworICAgICAgICBy dGw4MTM5X2RvX3JlY2VpdmUocywgYnVmLCBzaXplLCBkb19pbnRlcnJ1cHQpOworICAgIH0KKyAg ICBlbHNlCisgICAgeworICAgICAgICBxZW11X3NlbmRfcGFja2V0KHMtPnZjLCBidWYsIHNpemUp OworICAgIH0KK30KKwogc3RhdGljIGludCBydGw4MTM5X3RyYW5zbWl0X29uZShSVEw4MTM5U3Rh dGUgKnMsIGludCBkZXNjcmlwdG9yKQogewogICAgIGlmICghcnRsODEzOV90cmFuc21pdHRlcl9l bmFibGVkKHMpKQpAQCAtMTc2MiwxNSArMTc4NCw3IEBACiAgICAgcy0+VHhTdGF0dXNbZGVzY3Jp cHRvcl0gfD0gVHhIb3N0T3duczsKICAgICBzLT5UeFN0YXR1c1tkZXNjcmlwdG9yXSB8PSBUeFN0 YXRPSzsKIAotICAgIGlmIChUeExvb3BCYWNrID09IChzLT5UeENvbmZpZyAmIFR4TG9vcEJhY2sp KQotICAgIHsKLSAgICAgICAgREVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysgdHJhbnNtaXQgbG9v cGJhY2sgbW9kZVxuIikpOwotICAgICAgICBydGw4MTM5X2RvX3JlY2VpdmUocywgdHhidWZmZXIs IHR4c2l6ZSwgMCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHFlbXVfc2VuZF9w YWNrZXQocy0+dmMsIHR4YnVmZmVyLCB0eHNpemUpOwotICAgIH0KKyAgICBydGw4MTM5X3RyYW5z ZmVyX2ZyYW1lKHMsIHR4YnVmZmVyLCB0eHNpemUsIDApOwogCiAgICAgREVCVUdfUFJJTlQoKCJS VEw4MTM5OiArKysgdHJhbnNtaXR0ZWQgJWQgYnl0ZXMgZnJvbSBkZXNjcmlwdG9yICVkXG4iLCB0 eHNpemUsIGRlc2NyaXB0b3IpKTsKIApAQCAtMTgzMSw2ICsxODQ1LDkgQEAKICNkZWZpbmUgQ1Bf VFhfTFMgKDE8PDI4KQogLyogbGFyZ2Ugc2VuZCBwYWNrZXQgZmxhZyAqLwogI2RlZmluZSBDUF9U WF9MR1NFTiAoMTw8MjcpCisvKiBsYXJnZSBzZW5kIE1TUyBtYXNrLCBiaXRzIDE2Li4uMjUgKi8K KyNkZWZpbmUgQ1BfVENfTEdTRU5fTVNTX01BU0sgKCgxIDw8IDEyKSAtIDEpCisKIC8qIElQIGNo ZWNrc3VtIG9mZmxvYWQgZmxhZyAqLwogI2RlZmluZSBDUF9UWF9JUENTICgxPDwxOCkKIC8qIFVE UCBjaGVja3N1bSBvZmZsb2FkIGZsYWcgKi8KQEAgLTE4ODUsNiArMTkwMiw4IEBACiAgICAgICAg IHMtPmNwbHVzX3R4YnVmZmVyX2xlbiA9IENQX1RYX0JVRkZFUl9TSVpFOwogICAgICAgICBzLT5j cGx1c190eGJ1ZmZlciA9IG1hbGxvYyhzLT5jcGx1c190eGJ1ZmZlcl9sZW4pOwogICAgICAgICBz LT5jcGx1c190eGJ1ZmZlcl9vZmZzZXQgPSAwOworCisgICAgICAgIERFQlVHX1BSSU5UKCgiUlRM ODEzOTogKysrIEMrIG1vZGUgdHJhbnNtaXNzaW9uIGJ1ZmZlciBhbGxvY2F0ZWQgc3BhY2UgJWRc biIsIHMtPmNwbHVzX3R4YnVmZmVyX2xlbikpOwogICAgIH0KIAogICAgIHdoaWxlIChzLT5jcGx1 c190eGJ1ZmZlciAmJiBzLT5jcGx1c190eGJ1ZmZlcl9vZmZzZXQgKyB0eHNpemUgPj0gcy0+Y3Bs dXNfdHhidWZmZXJfbGVuKQpAQCAtMTk2MCwxNiArMTk3OSwxOSBAQAogICAgICAgICBzLT5jcGx1 c190eGJ1ZmZlcl9vZmZzZXQgPSAwOwogICAgICAgICBzLT5jcGx1c190eGJ1ZmZlcl9sZW4gPSAw OwogCi0gICAgICAgIGlmICh0eGR3MCAmIChDUF9UWF9JUENTIHwgQ1BfVFhfVURQQ1MgfCBDUF9U WF9UQ1BDUykpCisgICAgICAgIGlmICh0eGR3MCAmIChDUF9UWF9JUENTIHwgQ1BfVFhfVURQQ1Mg fCBDUF9UWF9UQ1BDUyB8IENQX1RYX0xHU0VOKSkKICAgICAgICAgewogICAgICAgICAgICAgREVC VUdfUFJJTlQoKCJSVEw4MTM5OiArKysgQysgbW9kZSBvZmZsb2FkZWQgdGFzayBjaGVja3N1bVxu IikpOwogCiAgICAgICAgICAgICAjZGVmaW5lIEVUSF9QX0lQCTB4MDgwMAkJLyogSW50ZXJuZXQg UHJvdG9jb2wgcGFja2V0CSovCiAgICAgICAgICAgICAjZGVmaW5lIEVUSF9ITEVOICAgIDE0Cisg ICAgICAgICAgICAjZGVmaW5lIEVUSF9NVFUgICAgIDE1MDAKIAogICAgICAgICAgICAgLyogaXAg cGFja2V0IGhlYWRlciAqLwogICAgICAgICAgICAgcmVnaXN0ZXIgc3RydWN0IGlwICppcCA9IDA7 CiAgICAgICAgICAgICBpbnQgaGxlbiA9IDA7CisgICAgICAgICAgICB1X2ludDhfdCAgaXBfcHJv dG9jb2wgPSAwOworICAgICAgICAgICAgdV9pbnQxNl90IGlwX2RhdGFfbGVuID0gMDsKIAogICAg ICAgICAgICAgc3RydWN0IG1idWYgbG9jYWxfbTsKIApAQCAtMTk4OSw2ICsyMDExLDggQEAKICAg ICAgICAgICAgICAgICAgICAgaXAgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg ICAgICAgICAgICAgICAgICAgIGhsZW4gPSBpcC0+aXBfaGwgPDwgMjsKKyAgICAgICAgICAgICAg ICAgICAgaXBfcHJvdG9jb2wgPSBpcC0+aXBfcDsKKyAgICAgICAgICAgICAgICAgICAgaXBfZGF0 YV9sZW4gPSBudG9ocyhpcC0+aXBfbGVuKSAtIGhsZW47CiAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgfQogCkBAIC0yMDEwLDEyICsyMDM0LDExOCBAQAogICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHR4ZHcwICYgKENQ X1RYX1RDUENTfENQX1RYX1VEUENTKSkKKyAgICAgICAgICAgICAgICBpZiAoKHR4ZHcwICYgQ1Bf VFhfTEdTRU4pICYmIGlwX3Byb3RvY29sID09IElQUFJPVE9fVENQKQogICAgICAgICAgICAgICAg IHsKLSAgICAgICAgICAgICAgICAgICAgREVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysgQysgbW9k ZSBuZWVkIFRDUCBvciBVRFAgY2hlY2tzdW1cbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgaW50 IGxhcmdlX3NlbmRfbXNzID0gKHR4ZHcwID4+IDE2KSAmIENQX1RDX0xHU0VOX01TU19NQVNLOwor CisgICAgICAgICAgICAgICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysrIEMrIG1vZGUg b2ZmbG9hZGVkIHRhc2sgVFNPIE1UVT0lZCBJUCBkYXRhICVkIGZyYW1lIGRhdGEgJWQgc3BlY2lm aWVkIE1TUz0lZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVUSF9NVFUs IGlwX2RhdGFfbGVuLCBzYXZlZF9zaXplIC0gRVRIX0hMRU4sIGxhcmdlX3NlbmRfbXNzKSk7CisK KyAgICAgICAgICAgICAgICAgICAgaW50IHRjcF9zZW5kX29mZnNldCA9IDA7CisgICAgICAgICAg ICAgICAgICAgIGludCBzZW5kX2NvdW50ID0gMDsKKworICAgICAgICAgICAgICAgICAgICAvL2lw X2RhdGFfbGVuID0gc2F2ZWRfc2l6ZSAtIEVUSF9ITEVOOworCisgICAgICAgICAgICAgICAgICAg IC8qIG1heGltdW0gSVAgaGVhZGVyIGxlbmd0aCBpcyA2MCBieXRlcyAqLworICAgICAgICAgICAg ICAgICAgICB1aW50OF90IHNhdmVkX2lwX2hlYWRlcls2MF07CisKKyAgICAgICAgICAgICAgICAg ICAgLyogc2F2ZSBJUCBoZWFkZXIgdGVtcGxhdGU7IGRhdGEgYXJlYSBpcyB1c2VkIGluIHRjcCBj aGVja3N1bSBjYWxjdWxhdGlvbiAqLworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoc2F2ZWRf aXBfaGVhZGVyLCBsb2NhbF9tLm1fZGF0YSwgaGxlbik7CisKKyAgICAgICAgICAgICAgICAgICAg LyogYSBwbGFjZWhvbGRlciBmb3IgY2hlY2tzdW0gY2FsY3VsYXRpb24gcm91dGluZSBpbiB0Y3Ag Y2FzZSAqLworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWJ1ZiBsb2NhbF9jaGVja3N1bV9t OworCisgICAgICAgICAgICAgICAgICAgIGxvY2FsX2NoZWNrc3VtX20ubV9kYXRhID0gbG9jYWxf bS5tX2RhdGEgKyBobGVuIC0gMTI7CisgICAgICAgICAgICAgICAgICAgIGxvY2FsX2NoZWNrc3Vt X20ubV9sZW4gID0gbG9jYWxfbS5tX2xlbiAgLSBobGVuICsgMTI7CisKKyAgICAgICAgICAgICAg ICAgICAgLyogcG9pbnRlciB0byBUQ1AgaGVhZGVyICovCisgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB0Y3BoZHIqIHBfdGNwX2hkciA9IChzdHJ1Y3QgdGNwaGRyKikgKGxvY2FsX20ubV9kYXRh ICsgaGxlbik7CisKKyAgICAgICAgICAgICAgICAgICAgaW50IHRjcF9obGVuID0gcF90Y3BfaGRy LT50aF9vZmYgPDwgNDsKKworICAgICAgICAgICAgICAgICAgICAvKiBFVEhfTVRVID0gaXAgaGVh ZGVyIGxlbiArIHRjcCBoZWFkZXIgbGVuICsgcGF5bG9hZCAqLworICAgICAgICAgICAgICAgICAg ICBpbnQgdGNwX2RhdGFfbGVuID0gaXBfZGF0YV9sZW4gLSBobGVuIC0gdGNwX2hsZW47CisgICAg ICAgICAgICAgICAgICAgIGludCB0Y3BfY2h1bmtfc2l6ZSA9IEVUSF9NVFUgLSBobGVuIC0gdGNw X2hsZW47CisKKyAgICAgICAgICAgICAgICAgICAgREVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysg QysgbW9kZSBUU08gSVAgZGF0YSBsZW4gJWQgVENQIGhsZW4gJWQgVENQIGRhdGEgbGVuICVkIFRD UCBjaHVuayBzaXplICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBf ZGF0YV9sZW4sIHRjcF9obGVuLCB0Y3BfZGF0YV9sZW4sIHRjcF9jaHVua19zaXplKSk7CiAKLSAg ICAgICAgICAgICAgICAgICAgdV9pbnQ4X3QgIGlwX3Byb3RvY29sID0gaXAtPmlwX3A7Ci0gICAg ICAgICAgICAgICAgICAgIHVfaW50MTZfdCBpcF9kYXRhX2xlbiA9IG50b2hzKGlwLT5pcF9sZW4p IC0gaGxlbjsKKyAgICAgICAgICAgICAgICAgICAgLyogbm90ZSB0aGUgY3ljbGUgYmVsb3cgb3Zl cndyaXRlcyBJUCBoZWFkZXIgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgYnV0IHJlc3Rv cmVzIGl0IGZyb20gc2F2ZWRfaXBfaGVhZGVyIGJlZm9yZSBzZW5kaW5nIHBhY2tldCAqLworCisg ICAgICAgICAgICAgICAgICAgIGludCBpc19sYXN0X2ZyYW1lID0gMDsKKworICAgICAgICAgICAg ICAgICAgICBmb3IgKHRjcF9zZW5kX29mZnNldCA9IDA7IHRjcF9zZW5kX29mZnNldCA8IHRjcF9k YXRhX2xlbjsgdGNwX3NlbmRfb2Zmc2V0ICs9IHRjcF9jaHVua19zaXplKQorICAgICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBjaHVua19zaXplID0g dGNwX2NodW5rX3NpemU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRo aXMgaXMgdGhlIGxhc3QgZnJhbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Y3Bf c2VuZF9vZmZzZXQgKyB0Y3BfY2h1bmtfc2l6ZSA+PSB0Y3BfZGF0YV9sZW4pCisgICAgICAgICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfbGFzdF9mcmFt ZSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtfc2l6ZSA9IHRjcF9kYXRh X2xlbiAtIHRjcF9zZW5kX29mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgICAgICAgICAgICAgREVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysgQysgbW9kZSBU U08gVENQIHNlcW5vICUwOHhcbiIsIG50b2hsKHBfdGNwX2hkci0+dGhfc2VxKSkpOworCisgICAg ICAgICAgICAgICAgICAgICAgICAvKiBhZGQgNCBUQ1AgcHNldWRvaGVhZGVyIGZpZWxkcyAqLwor ICAgICAgICAgICAgICAgICAgICAgICAgLyogY29weSBJUCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u IGZpZWxkcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGxvY2FsX2NoZWNrc3Vt X20ubV9kYXRhLCBzYXZlZF9pcF9oZWFkZXIgKyAxMiwgOCk7CisKKyAgICAgICAgICAgICAgICAg ICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysrIEMrIG1vZGUgVFNPIGNhbGN1bGF0aW5n IFRDUCBjaGVja3N1bSBmb3IgcGFja2V0IHdpdGggJWQgYnl0ZXMgZGF0YVxuIiwgdGNwX2hsZW4g KyBjaHVua19zaXplKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Y3Bfc2VuZF9v ZmZzZXQpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWVtY3B5KCh1aW50OF90KilwX3RjcF9oZHIgKyB0Y3BfaGxlbiwgKHVpbnQ4X3QqKXBf dGNwX2hkciArIHRjcF9obGVuICsgdGNwX3NlbmRfb2Zmc2V0LCBjaHVua19zaXplKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLyoga2VlcCBQ VVNIIGFuZCBGSU4gZmxhZ3Mgb25seSBmb3IgdGhlIGxhc3QgZnJhbWUgKi8KKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmICghaXNfbGFzdF9mcmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3RjcF9oZHItPnRoX2ZsYWdzICY9IH4o VEhfUFVTSHxUSF9GSU4pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg ICAgICAgICAgICAgICAvKiByZWNhbGN1bGF0ZSBUQ1AgY2hlY2tzdW0gKi8KKyAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB0Y3BpcGhkciAqIHBfdGNwaXBfaGRyID0gKHN0cnVjdCB0Y3Bp cGhkciAqKWxvY2FsX2NoZWNrc3VtX20ubV9kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAg cF90Y3BpcF9oZHItPnRpX3gxID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdGNwaXBf aGRyLT50aV9wciA9IElQUFJPVE9fVENQOworICAgICAgICAgICAgICAgICAgICAgICAgcF90Y3Bp cF9oZHItPnRpX2xlbiA9IGh0b25zKHRjcF9obGVuICsgY2h1bmtfc2l6ZSk7CisKKyAgICAgICAg ICAgICAgICAgICAgICAgIHBfdGNwX2hkci0+dGhfc3VtID0gMDsKKworICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHRjcF9jaGVja3N1bSA9IGNrc3VtKCZsb2NhbF9jaGVja3N1bV9tLCB0Y3Bf aGxlbiArIGNodW5rX3NpemUgKyAxMik7CisgICAgICAgICAgICAgICAgICAgICAgICBERUJVR19Q UklOVCgoIlJUTDgxMzk6ICsrKyBDKyBtb2RlIFRTTyBUQ1AgY2hlY2tzdW0gJTA0eFxuIiwgdGNw X2NoZWNrc3VtKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdGNwX2hkci0+dGhfc3Vt ID0gdGNwX2NoZWNrc3VtOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXN0b3JlIElQ IGhlYWRlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGxvY2FsX20ubV9kYXRh LCBzYXZlZF9pcF9oZWFkZXIsIGhsZW4pOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBz ZXQgSVAgZGF0YSBsZW5ndGggYW5kIHJlY2FsY3VsYXRlIElQIGNoZWNrc3VtICovCisgICAgICAg ICAgICAgICAgICAgICAgICBpcC0+aXBfbGVuID0gaHRvbnMoaGxlbiArIHRjcF9obGVuICsgY2h1 bmtfc2l6ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluY3JlbWVudCBJUCBpZCBm b3Igc3Vic2VxdWVudCBmcmFtZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5pcF9p ZCA9IGh0b25zKHRjcF9zZW5kX29mZnNldC90Y3BfY2h1bmtfc2l6ZSArIG50b2hzKGlwLT5pcF9p ZCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpcC0+aXBfc3VtID0gMDsKKyAgICAgICAg ICAgICAgICAgICAgICAgIGlwLT5pcF9zdW0gPSBja3N1bSgmbG9jYWxfbSwgaGxlbik7IAorICAg ICAgICAgICAgICAgICAgICAgICAgREVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysgQysgbW9kZSBU U08gSVAgaGVhZGVyIGxlbj0lZCBjaGVja3N1bT0lMDR4XG4iLCBobGVuLCBpcC0+aXBfc3VtKSk7 CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB0c29fc2VuZF9zaXplID0gRVRIX0hMRU4g KyBobGVuICsgdGNwX2hsZW4gKyBjaHVua19zaXplOworICAgICAgICAgICAgICAgICAgICAgICAg REVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysgQysgbW9kZSBUU08gdHJhbnNmZXJyaW5nIHBhY2tl dCBzaXplICVkXG4iLCB0c29fc2VuZF9zaXplKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBy dGw4MTM5X3RyYW5zZmVyX2ZyYW1lKHMsIHNhdmVkX2J1ZmZlciwgdHNvX3NlbmRfc2l6ZSwgMCk7 CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFkZCB0cmFuc2ZlcnJlZCBjb3VudCB0byBU Q1Agc2VxdWVuY2UgbnVtYmVyICovCisgICAgICAgICAgICAgICAgICAgICAgICBwX3RjcF9oZHIt PnRoX3NlcSA9IGh0b25sKGNodW5rX3NpemUgKyBudG9obChwX3RjcF9oZHItPnRoX3NlcSkpOwor ICAgICAgICAgICAgICAgICAgICAgICAgKytzZW5kX2NvdW50OworICAgICAgICAgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgICAgICAgICAgLyogU3RvcCBzZW5kaW5nIHRoaXMgZnJhbWUgKi8K KyAgICAgICAgICAgICAgICAgICAgc2F2ZWRfc2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR4ZHcwICYgKENQX1RYX1RDUENTfENQX1RYX1VEUENT KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIERFQlVHX1BSSU5UKCgi UlRMODEzOTogKysrIEMrIG1vZGUgbmVlZCBUQ1Agb3IgVURQIGNoZWNrc3VtXG4iKSk7CiAKICAg ICAgICAgICAgICAgICAgICAgLyogbWF4aW11bSBJUCBoZWFkZXIgbGVuZ3RoIGlzIDYwIGJ5dGVz ICovCiAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qgc2F2ZWRfaXBfaGVhZGVyWzYwXTsKQEAg LTIwODUsMTYgKzIyMTUsNyBAQAogCiAgICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysr IEMrIG1vZGUgdHJhbnNtaXR0aW5nICVkIGJ5dGVzIHBhY2tldFxuIiwgc2F2ZWRfc2l6ZSkpOwog Ci0gICAgICAgIGlmIChUeExvb3BCYWNrID09IChzLT5UeENvbmZpZyAmIFR4TG9vcEJhY2spKQot ICAgICAgICB7Ci0gICAgICAgICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyBDKyB0cmFu c21pdCBsb29wYmFjayBtb2RlXG4iKSk7Ci0gICAgICAgICAgICBydGw4MTM5X3JlY2VpdmUocywg c2F2ZWRfYnVmZmVyLCBzYXZlZF9zaXplKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg ICAgIHsKLSAgICAgICAgICAgIC8qIHRyYW5zbWl0IHRoZSBwYWNrZXQgKi8KLSAgICAgICAgICAg IHFlbXVfc2VuZF9wYWNrZXQocy0+dmMsIHNhdmVkX2J1ZmZlciwgc2F2ZWRfc2l6ZSk7Ci0gICAg ICAgIH0KKyAgICAgICAgcnRsODEzOV90cmFuc2Zlcl9mcmFtZShzLCBzYXZlZF9idWZmZXIsIHNh dmVkX3NpemUsIDEpOwogCiAgICAgICAgIC8qIHJlc3RvcmUgY2FyZCBzcGFjZSBpZiB0aGVyZSB3 YXMgbm8gcmVjdXJzaW9uIGFuZCByZXNldCBvZmZzZXQgKi8KICAgICAgICAgaWYgKCFzLT5jcGx1 c190eGJ1ZmZlcikK ------=_Part_55261_7804153.1152049506531--