From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17885 invoked by alias); 11 May 2009 13:41:53 -0000 Received: (qmail 17877 invoked by uid 22791); 11 May 2009 13:41:51 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from fg-out-1718.google.com (HELO fg-out-1718.google.com) (72.14.220.159) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 11 May 2009 13:41:38 +0000 Received: by fg-out-1718.google.com with SMTP id 22so493038fge.0 for ; Mon, 11 May 2009 06:41:35 -0700 (PDT) MIME-Version: 1.0 Received: by 10.86.79.6 with SMTP id c6mr6383565fgb.52.1242049295134; Mon, 11 May 2009 06:41:35 -0700 (PDT) Date: Mon, 11 May 2009 13:41:00 -0000 Message-ID: <44dd56d50905110641l48736c3bnb67f6e49401dc26c@mail.gmail.com> Subject: CS8900A TX improvement From: Savin Zlobec To: ecos-patches@sourceware.org Content-Type: multipart/mixed; boundary=000e0cd28eae07b2f50469a32357 Mailing-List: contact ecos-patches-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: ecos-patches-owner@ecos.sourceware.org X-SW-Source: 2009-05/txt/msg00023.txt.bz2 --000e0cd28eae07b2f50469a32357 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 893 Hi All! I have been experiencing problems with CS8900A driver under heavy network load. On occasion the driver would discard the TX frame because CS8900A won't immediatly signal TxRDY - if there is not enough space inside hardware buffers. After the TX frame is discarded the driver still waits 250ms for TX done event! In my case this can happen often and in a row... The right thing to do in this case is to offload the RX frames making space for the TX frame - TxRDY will be issued afterwards. The attached patch does this by storing the sg_list internally if the TxRDY is not obtained immediately and returns the control to the upper layers. The network stack can then read the RX frames from CS8900A which will also trigger TxRDY signal. The driver will now handle this signal by coping previously stored sg_list into hardware buffers starting the transmission. Regards, Savin Zlobec --000e0cd28eae07b2f50469a32357 Content-Type: text/x-diff; charset=US-ASCII; name="cs8900a.diff" Content-Disposition: attachment; filename="cs8900a.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ful7t1ng0 Content-length: 13473 ZGlmZiAtdXJ3IC1VIDUgcGFja2FnZXMtY3ZzLTA5MDUxMS9kZXZzL2V0aC9j bC9jczg5MDBhL2N1cnJlbnQvQ2hhbmdlTG9nIHBhY2thZ2VzL2RldnMvZXRo L2NsL2NzODkwMGEvY3VycmVudC9DaGFuZ2VMb2cKLS0tIHBhY2thZ2VzLWN2 cy0wOTA1MTEvZGV2cy9ldGgvY2wvY3M4OTAwYS9jdXJyZW50L0NoYW5nZUxv ZwkyMDA5LTAzLTAyIDIyOjE2OjUyLjAwMDAwMDAwMCArMDEwMAorKysgcGFj a2FnZXMvZGV2cy9ldGgvY2wvY3M4OTAwYS9jdXJyZW50L0NoYW5nZUxvZwky MDA5LTA1LTExIDEyOjMxOjU5LjAwMDAwMDAwMCArMDIwMApAQCAtMSw1ICsx LDEyIEBACisyMDA5LTA1LTExICBTYXZpbiBabG9iZWMgPHNhdmluekB1c2Vy cy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGluY2x1ZGUvY3M4OTAwLmg6CisJ KiBzcmMvaWZfY3M4OTAwYS5jOiBEb24ndCBkcm9wIFRYIGZyYW1lcyB3aGVu IHRoZXJlIGlzIG5vdCBlbm91Z2gKKwlidWZmZXIgc3BhY2UgYXZhaWxhYmxl IGluc2lkZSBoYXJkd2FyZSwgYnV0IHN0YXJ0IHRyYW5zbWl0IG9uIG5leHQK KwlUeFJEWSBldmVudC4KKwogIDIwMDktMDItMjggIFNlcmdlaSBHYXZyaWtv diAgPHNlcmdlaS5nYXZyaWtvdkBnbWFpbC5jb20+CiAJCiAgICAgICAgICog c3JjL2lmX2NzODkwMGEuYzogRml4ZWQgaW50ZXJydXB0IGhvb2tpbmcgYmxv Y2sgaW4gY3M4OTAwYV9pbml0KCkgdG8KICAgICAgICAgcHJldmVudCBhc3Nl cnRpb24gZmFpbCBvbiBjeWdfaW50ZXJydXB0X2F0dGFjaCgpIHdoZW4gaW50 ZXJydXB0IGlzIG5vdAogICAgICAgICB1c2VkLgpkaWZmIC11cncgLVUgNSBw YWNrYWdlcy1jdnMtMDkwNTExL2RldnMvZXRoL2NsL2NzODkwMGEvY3VycmVu dC9pbmNsdWRlL2NzODkwMC5oIHBhY2thZ2VzL2RldnMvZXRoL2NsL2NzODkw MGEvY3VycmVudC9pbmNsdWRlL2NzODkwMC5oCi0tLSBwYWNrYWdlcy1jdnMt MDkwNTExL2RldnMvZXRoL2NsL2NzODkwMGEvY3VycmVudC9pbmNsdWRlL2Nz ODkwMC5oCTIwMDktMDEtMjkgMTg6NDg6MDcuMDAwMDAwMDAwICswMTAwCisr KyBwYWNrYWdlcy9kZXZzL2V0aC9jbC9jczg5MDBhL2N1cnJlbnQvaW5jbHVk ZS9jczg5MDAuaAkyMDA5LTA1LTExIDExOjUzOjMwLjAwMDAwMDAwMCArMDIw MApAQCAtNTIsMTAgKzUyLDExIEBACiAvLz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAKICNpbmNsdWRlIDxjeWcvaW5mcmEvY3lnX3R5cGUuaD4K IAogI2luY2x1ZGUgPGN5Zy9oYWwvaGFsX2lvLmg+CisjaW5jbHVkZSA8Y3ln L2lvL2V0aC9ldGhfZHJ2Lmg+CiAjaW5jbHVkZSA8cGtnY29uZi9kZXZzX2V0 aF9jbF9jczg5MDBhLmg+CiAKICNkZWZpbmUgX19XQU5UX0NPTkZJRwogI2lu Y2x1ZGUgQ1lHREFUX0RFVlNfRVRIX0NMX0NTODkwMEFfSU5MCiAjdW5kZWYg X19XQU5UX0NPTkZJRwpAQCAtOTcsMjAgKzk4LDIyIEBACiAvLyBQcml2YXRl IGRyaXZlciBzdHJ1Y3R1cmUKIHN0cnVjdCBjczg5MDBhX3ByaXZfZGF0YTsK IHR5cGVkZWYgY3lnX2Jvb2wgKCpwcm92aWRlX2VzYV90KShzdHJ1Y3QgY3M4 OTAwYV9wcml2X2RhdGEqIGNwZCk7CiAKIHR5cGVkZWYgc3RydWN0IGNzODkw MGFfcHJpdl9kYXRhIHsKLSAgICBib29sIHR4YnVzeSwgaGFyZHdpcmVkX2Vz YTsKKyAgICBib29sIHR4YnVzeSwgdHhwZW5kaW5nLCBoYXJkd2lyZWRfZXNh OwogICAgIGludCByeG1vZGU7CiAgICAgY3lnX3VpbnQ4IGVzYVs2XTsKICAg ICBwcm92aWRlX2VzYV90IHByb3ZpZGVfZXNhOwogICAgIGN5Z192ZWN0b3Jf dCBpbnRlcnJ1cHQ7ICAgICAgICAgICAgIC8vIEludGVycnVwdCB2ZWN0b3Ig dXNlZCBieSBjb250cm9sbGVyCiAgICAgaW50IHByaW9yaXR5OwkJCQkJCS8v IFByaW9yaXR5IGxldmVsIHVzZWQgYnkgY29udHJvbGxlcgogICAgIGN5Z19o YW5kbGVfdCAgaW50ZXJydXB0X2hhbmRsZTsKICAgICBjeWdfaW50ZXJydXB0 IGludGVycnVwdF9vYmplY3Q7CiAgICAgY3lnX2FkZHJ3b3JkX3QgYmFzZTsK ICAgICBjeWdfdWludDMyIHR4a2V5OyAgIC8vIFVzZWQgdG8gYWNrIHdoZW4g cGFja2V0IHNlbnQKKyAgICBzdHJ1Y3QgZXRoX2Rydl9zZyB0eHNnX2xpc3Rb TUFYX0VUSF9EUlZfU0ddOworICAgIGludCB0eHNnX2xlbjsKICAgICBzdHJ1 Y3QgY3lnX25ldGRldnRhYl9lbnRyeSAqdGFiOwogI2lmZGVmIENZR1BLR19L RVJORUwKICAgICBjeWdfdGlja19jb3VudF90IHR4c3RhcnQ7CiAjZW5kaWYK IH0gY3M4OTAwYV9wcml2X2RhdGFfdDsKZGlmZiAtdXJ3IC1VIDUgcGFja2Fn ZXMtY3ZzLTA5MDUxMS9kZXZzL2V0aC9jbC9jczg5MDBhL2N1cnJlbnQvc3Jj L2lmX2NzODkwMGEuYyBwYWNrYWdlcy9kZXZzL2V0aC9jbC9jczg5MDBhL2N1 cnJlbnQvc3JjL2lmX2NzODkwMGEuYwotLS0gcGFja2FnZXMtY3ZzLTA5MDUx MS9kZXZzL2V0aC9jbC9jczg5MDBhL2N1cnJlbnQvc3JjL2lmX2NzODkwMGEu YwkyMDA5LTAzLTAyIDIyOjE2OjUyLjAwMDAwMDAwMCArMDEwMAorKysgcGFj a2FnZXMvZGV2cy9ldGgvY2wvY3M4OTAwYS9jdXJyZW50L3NyYy9pZl9jczg5 MDBhLmMJMjAwOS0wNS0xMSAxMjoyNDozOS4wMDAwMDAwMDAgKzAyMDAKQEAg LTM0NCwxMCArMzQ0LDExIEBACiAgICAgLy8gQ2xlYXIgSW50ZXJydXB0IFN0 YXR1cyBRdWV1ZSBiZWZvcmUgZW5hYmxpbmcgaW50ZXJydXB0cwogICAgIGRv IHsKICAgICAgICAgQ1NfSU4oY3BkLT5iYXNlLCBDUzg5MDBBX0lTUSwgc3Rh dCk7CiAgICAgfSAgd2hpbGUgKHN0YXQgIT0gMCkgOwogICAgIGNwZC0+dHhi dXN5ID0gZmFsc2U7CisgICAgY3BkLT50eHBlbmRpbmcgPSBmYWxzZTsKICNp Zm5kZWYgQ1lHSU1QX0RFVlNfRVRIX0NMX0NTODkwMEFfREFUQUJVU184QklU CiAgICAgcHV0X3JlZyhiYXNlLCBQUF9CdXNDdGwsIFBQX0J1c0N0bF9FbmFi bGVJUlEpOwogI2VuZGlmCiB9CiAKQEAgLTQ0Myw4OCArNDQ0LDM3IEBACiAg ICAgICAgICAgICAvLyAyNTBtcyBpcyBtb3JlIHRoYW4gZW5vdWdoIHRvIHRy YW5zbWl0IG9uZSBmcmFtZQogI2lmIERFQlVHICYgMQogICAgICAgICAgICAg ZGlhZ19wcmludGYoIkNTODkwMDogVHggaW50ZXJydXB0IGxvc3RcbiIpOwog I2VuZGlmCiAgICAgICAgICAgICBjcGQtPnR4YnVzeSA9IGZhbHNlOworICAg ICAgICAgICAgY3BkLT50eHBlbmRpbmcgPSBmYWxzZTsKICAgICAgICAgICAg IC8vIEZyZWUgdXAgdGhlIGJ1ZmZlciAod2l0aCBlcnJvciBpbmRpY2F0aW9u KQogICAgICAgICAgICAgKHNjLT5mdW5zLT5ldGhfZHJ2LT50eF9kb25lKShz YywgY3BkLT50eGtleSwgMSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYK ICAgICByZXR1cm4gKGNwZC0+dHhidXN5ID09IGZhbHNlKTsKIH0KIAotLy8g VGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byBzZW5kIGRhdGEgdG8gdGhlIGhh cmR3YXJlLgorLy8gVGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byBwdXQgZGF0 YSBpbnRvIHRoZSBoYXJkd2FyZSB0eCBidWZmZXIuCiBzdGF0aWMgdm9pZCAK LWNzODkwMGFfc2VuZChzdHJ1Y3QgZXRoX2Rydl9zYyAqc2MsIHN0cnVjdCBl dGhfZHJ2X3NnICpzZ19saXN0LCBpbnQgc2dfbGVuLCAKLSAgICAgICAgICAg IGludCB0b3RhbF9sZW4sIHVuc2lnbmVkIGxvbmcga2V5KQorY3M4OTAwYV9w dXRfdHhkYXRhKHN0cnVjdCBldGhfZHJ2X3NjICpzYywgc3RydWN0IGV0aF9k cnZfc2cgKnNnX2xpc3QsIGludCBzZ19sZW4pCiB7CiAgICAgY3M4OTAwYV9w cml2X2RhdGFfdCAqY3BkID0gKGNzODkwMGFfcHJpdl9kYXRhX3QgKilzYy0+ ZHJpdmVyX3ByaXZhdGU7Ci0gICAgY3lnX2FkZHJ3b3JkX3QgYmFzZSA9IGNw ZC0+YmFzZTsKICAgICBpbnQgaTsKICAgICBpbnQgbGVuOwogICAgIGN5Z191 aW50OCAqZGF0YTsKICAgICBjeWdfdWludDE2IHNhdmVkX2RhdGEgPSAwLCAq c2RhdGE7Ci0gICAgY3lnX3VpbnQxNiBzdGF0OwogICAgIGJvb2wgZm9yY2Vf Y29waW5nX2J5X2J5dGU7CiAgICAgYm9vbCBvZGRfYnl0ZSA9IGZhbHNlOwog Ci0gICAgLy8gTWFyayB4bWl0dGVyIGJ1c3kKLSAgICBjcGQtPnR4YnVzeSA9 IHRydWU7Ci0gICAgY3BkLT50eGtleSA9IGtleTsKLSNpZmRlZiBDWUdQS0df S0VSTkVMCi0gICAgY3BkLT50eHN0YXJ0ID0gY3lnX2N1cnJlbnRfdGltZSgp OwotI2VuZGlmCi0KLSAgICAvLyBTdGFydCB0aGUgeG1pdCBzZXF1ZW5jZQot I2lmZGVmIENZR0lNUF9ERVZTX0VUSF9DTF9DUzg5MDBBX0RBVEFCVVNfQllU RV9TV0FQUEVECi0gICAgdG90YWxfbGVuID0gQ1lHX1NXQVAxNih0b3RhbF9s ZW4pOwotI2VuZGlmCi0gICAgICAgIAogI2lmZGVmIENZR0lNUF9ERVZTX0VU SF9DTF9DUzg5MDBBX0RBVEFCVVNfOEJJVAogICAgIGZvcmNlX2NvcGluZ19i eV9ieXRlID0gdHJ1ZTsKICNlbHNlCiAgICAgZm9yY2VfY29waW5nX2J5X2J5 dGUgPSBmYWxzZTsKICNlbmRpZgogCi0gICAgLy8gVGhlIGhhcmR3YXJlIGlu ZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBvcHRpb25zIGFzIHRvIHdoZW4gdGhl IGFjdHVhbAotICAgIC8vIHBhY2tldCB0cmFuc21pc3Npb24gd2lsbCBzdGFy dCB3cnQgbW92aW5nIG9mIGRhdGEgaW50byB0aGUgdHJhbnNtaXQKLSAgICAv LyBidWZmZXIuICBIb3dldmVyLCBpbXBpcmljYWwgcmVzdWx0cyBzZWVtIHRv IGluZGljYXRlIHRoYXQgaWYgdGhlCi0gICAgLy8gcGFja2V0IGlzIGxhcmdl IGFuZCB0cmFuc21pc3Npb24gaXMgYWxsb3dlZCB0byBzdGFydCBiZWZvcmUg dGhlCi0gICAgLy8gZW50aXJlIHBhY2tldCBoYXMgYmVlbiBwdXNoZWQgaW50 byB0aGUgYnVmZmVyLCB0aGUgaGFyZHdhcmUgZ2V0cwotICAgIC8vIGNvbmZ1 c2VkIGFuZCB0aGUgcGFja2V0IGlzIGxvc3QsIGFsb25nIHdpdGggYSAibG9z dCIgVHggaW50ZXJydXB0LgotICAgIC8vIFRoaXMgbWF5IGJlIGEgY2FzZSBv ZiB0aGUgY29weSBsb29wIGJlbG93IGJlaW5nIGludGVycnVwdGVkLCBlLmcu Ci0gICAgLy8gYSBzeXN0ZW0gdGltZXIgaW50ZXJydXB0LCBhbmQgdGhlIGhh cmR3YXJlIGdldHRpbmcgdW5oYXBweSB0aGF0IAotICAgIC8vIG5vdCBhbGwg b2YgdGhlIGRhdGEgd2FzIHByb3ZpZGVkIGJlZm9yZSB0aGUgdHJhbnNtaXNz aW9uIHNob3VsZAotICAgIC8vIGhhdmUgY29tcGxldGVkIChpLmUuIGJ1ZmZl ciB1bmRlcnJ1bikuCi0gICAgLy8gRm9yIG5vdywgdGhlIHNvbHV0aW9uIGlz IHRvIG5vdCBhbGxvdyB0aGlzIG92ZXJsYXAuCi0gICAgLy9DU19PVVQoY3Bk LT5iYXNlLCBDUzg5MDBBX1R4Q01ELCBQUF9UeENtZF9UeFN0YXJ0XzUpCi0K LSAgICAvLyBTdGFydCBvbmx5IHdoZW4gYWxsIGRhdGEgc2VudCB0byBjaGlw Ci0gICAgQ1NfT1VUKGNwZC0+YmFzZSwgQ1M4OTAwQV9UeENNRCwgUFBfVHhD bWRfVHhTdGFydF9GdWxsKTsKLQotICAgIENTX09VVChjcGQtPmJhc2UsIENT ODkwMEFfVHhMRU4sIHRvdGFsX2xlbik7Ci0gICAgLy8gV2FpdCBmb3IgY29u dHJvbGxlciByZWFkeSBzaWduYWwKLSAgICB7Ci0gICAgICAgIC8vIGFkZCB0 aW1lb3V0IHBlciBjczg5MDBhIGJ1Z3ppbGxhIHJlcG9ydCAxMDAwMjgxICov Ci0gICAgICAgIGludCB0aW1lb3V0ID0gMTAwMDsKLQotICAgICAgICBkbyB7 Ci0gICAgICAgICAgICBzdGF0ID0gZ2V0X3JlZyhiYXNlLCBQUF9CdXNTdGF0 KTsKLSNpZiBERUJVRyAmIDEKLSAgICAgICAgICAgIGlmKCBzdGF0ICYgUFBf QnVzU3RhdF9UeEJpZCApCi0gICAgICAgICAgICAgICAgZGlhZ19wcmludGYo ICJjczg5MDBhX3NlbmQ6IEJpZCBlcnJvciFcbiIgKTsKLSNlbmRpZgotICAg ICAgICB9IHdoaWxlICghKHN0YXQgJiBQUF9CdXNTdGF0X1R4UkRZKSAmJiAt LXRpbWVvdXQpOwotCi0gICAgICAgIGlmKCAhdGltZW91dCApIHsKLSAgICAg ICAgICAgIC8vIHdlIG1pZ2h0IGFzIHdlbGwganVzdCByZXR1cm4sIHNpbmNl IGlmIHdlIHdyaXRlIHRoZSBkYXRhIGl0IHdpbGwKLSAgICAgICAgICAgIC8v IGp1c3QgZ2V0IHRocm93biBhd2F5Ci0gICAgICAgICAgICByZXR1cm47Ci0g ICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBQdXQgZGF0YSBpbnRvIGJ1ZmZl cgogICAgIGZvciAoaSA9IDA7ICBpIDwgc2dfbGVuOyAgaSsrKSB7CiAgICAg ICAgIGRhdGEgPSAoY3lnX3VpbnQ4ICopc2dfbGlzdFtpXS5idWY7CiAgICAg ICAgIGxlbiA9IHNnX2xpc3RbaV0ubGVuOwogCkBAIC01ODYsMTAgKzUzNiw4 MCBAQAogICAgIGlmIChvZGRfYnl0ZSkgewogICAgICAgICBDU19PVVQoY3Bk LT5iYXNlLCBDUzg5MDBBX1JUREFUQSwgc2F2ZWRfZGF0YSk7CiAgICAgfQog fQogCisvLyBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHRvIHNlbmQgZGF0YSB0 byB0aGUgaGFyZHdhcmUuCitzdGF0aWMgdm9pZCAKK2NzODkwMGFfc2VuZChz dHJ1Y3QgZXRoX2Rydl9zYyAqc2MsIHN0cnVjdCBldGhfZHJ2X3NnICpzZ19s aXN0LCBpbnQgc2dfbGVuLCAKKyAgICAgICAgICAgIGludCB0b3RhbF9sZW4s IHVuc2lnbmVkIGxvbmcga2V5KQoreworICAgIGNzODkwMGFfcHJpdl9kYXRh X3QgKmNwZCA9IChjczg5MDBhX3ByaXZfZGF0YV90ICopc2MtPmRyaXZlcl9w cml2YXRlOworICAgIGN5Z191aW50MTYgc3RhdDsKKworICAgIC8vIE1hcmsg eG1pdHRlciBidXN5CisgICAgY3BkLT50eGJ1c3kgPSB0cnVlOworICAgIGNw ZC0+dHhrZXkgPSBrZXk7CisjaWZkZWYgQ1lHUEtHX0tFUk5FTAorICAgIGNw ZC0+dHhzdGFydCA9IGN5Z19jdXJyZW50X3RpbWUoKTsKKyNlbmRpZgorCisg ICAgLy8gU3RhcnQgdGhlIHhtaXQgc2VxdWVuY2UKKyNpZmRlZiBDWUdJTVBf REVWU19FVEhfQ0xfQ1M4OTAwQV9EQVRBQlVTX0JZVEVfU1dBUFBFRAorICAg IHRvdGFsX2xlbiA9IENZR19TV0FQMTYodG90YWxfbGVuKTsKKyNlbmRpZgor CisgICAgLy8gVGhlIGhhcmR3YXJlIGluZGljYXRlcyB0aGF0IHRoZXJlIGFy ZSBvcHRpb25zIGFzIHRvIHdoZW4gdGhlIGFjdHVhbAorICAgIC8vIHBhY2tl dCB0cmFuc21pc3Npb24gd2lsbCBzdGFydCB3cnQgbW92aW5nIG9mIGRhdGEg aW50byB0aGUgdHJhbnNtaXQKKyAgICAvLyBidWZmZXIuICBIb3dldmVyLCBp bXBpcmljYWwgcmVzdWx0cyBzZWVtIHRvIGluZGljYXRlIHRoYXQgaWYgdGhl CisgICAgLy8gcGFja2V0IGlzIGxhcmdlIGFuZCB0cmFuc21pc3Npb24gaXMg YWxsb3dlZCB0byBzdGFydCBiZWZvcmUgdGhlCisgICAgLy8gZW50aXJlIHBh Y2tldCBoYXMgYmVlbiBwdXNoZWQgaW50byB0aGUgYnVmZmVyLCB0aGUgaGFy ZHdhcmUgZ2V0cworICAgIC8vIGNvbmZ1c2VkIGFuZCB0aGUgcGFja2V0IGlz IGxvc3QsIGFsb25nIHdpdGggYSAibG9zdCIgVHggaW50ZXJydXB0LgorICAg IC8vIFRoaXMgbWF5IGJlIGEgY2FzZSBvZiB0aGUgY29weSBsb29wIGJlbG93 IGJlaW5nIGludGVycnVwdGVkLCBlLmcuCisgICAgLy8gYSBzeXN0ZW0gdGlt ZXIgaW50ZXJydXB0LCBhbmQgdGhlIGhhcmR3YXJlIGdldHRpbmcgdW5oYXBw eSB0aGF0IAorICAgIC8vIG5vdCBhbGwgb2YgdGhlIGRhdGEgd2FzIHByb3Zp ZGVkIGJlZm9yZSB0aGUgdHJhbnNtaXNzaW9uIHNob3VsZAorICAgIC8vIGhh dmUgY29tcGxldGVkIChpLmUuIGJ1ZmZlciB1bmRlcnJ1bikuCisgICAgLy8g Rm9yIG5vdywgdGhlIHNvbHV0aW9uIGlzIHRvIG5vdCBhbGxvdyB0aGlzIG92 ZXJsYXAuCisgICAgLy9DU19PVVQoY3BkLT5iYXNlLCBDUzg5MDBBX1R4Q01E LCBQUF9UeENtZF9UeFN0YXJ0XzUpCisKKyAgICAvLyBTdGFydCBvbmx5IHdo ZW4gYWxsIGRhdGEgc2VudCB0byBjaGlwCisgICAgQ1NfT1VUKGNwZC0+YmFz ZSwgQ1M4OTAwQV9UeENNRCwgUFBfVHhDbWRfVHhTdGFydF9GdWxsKTsKKwor ICAgIENTX09VVChjcGQtPmJhc2UsIENTODkwMEFfVHhMRU4sIHRvdGFsX2xl bik7CisgICAgLy8gV2FpdCBmb3IgY29udHJvbGxlciByZWFkeSBzaWduYWwK KyAgICB7CisgICAgICAgIC8vIGFkZCB0aW1lb3V0IHBlciBjczg5MDBhIGJ1 Z3ppbGxhIHJlcG9ydCAxMDAwMjgxICovCisgICAgICAgIGludCB0aW1lb3V0 ID0gMTAwOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHN0YXQgPSBn ZXRfcmVnKGNwZC0+YmFzZSwgUFBfQnVzU3RhdCk7CisjaWYgREVCVUcgJiAx CisgICAgICAgICAgICBpZiggc3RhdCAmIFBQX0J1c1N0YXRfVHhCaWQgKQor ICAgICAgICAgICAgICAgIGRpYWdfcHJpbnRmKCAiY3M4OTAwYV9zZW5kOiBC aWQgZXJyb3IhXG4iICk7CisjZW5kaWYKKyAgICAgICAgfSB3aGlsZSAoIShz dGF0ICYgUFBfQnVzU3RhdF9UeFJEWSkgJiYgLS10aW1lb3V0KTsKKworICAg ICAgICAvLyBJZiB0cmFuc21pc3Npb24gY2FuJ3Qgc3RhcnQgcmlnaHQgYXdh eSwgdGhlbiBzdG9yZSB0aGUgc2cgbGlzdCBhbmQKKyAgICAgICAgLy8gZmls bCB0aGUgVFggYnVmZmVyIG9uIG5leHQgVHhSRFkgc2lnbmFsIC0gaW4gY3M4 OTAwYV9CdWZFdmVudC4KKyAgICAgICAgaWYoICF0aW1lb3V0ICkgeworICAg ICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg c2dfbGVuOyBpKyspCisgICAgICAgICAgICAgICAgY3BkLT50eHNnX2xpc3Rb aV0gPSBzZ19saXN0W2ldOworICAgICAgICAgICAgY3BkLT50eHNnX2xlbiA9 IHNnX2xlbjsKKyAgICAgICAgICAgIGNwZC0+dHhwZW5kaW5nID0gdHJ1ZTsK KyNpZiBERUJVRyAmIDEKKyAgICAgICAgICAgIGRpYWdfcHJpbnRmKCJEZWxh eWluZyBUWCB1bnRpbCBUeFJEWVxuIik7CisjZW5kaWYKKyAgICAgICAgICAg IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAg ICBjcGQtPnR4cGVuZGluZyA9IGZhbHNlOworICAgIH0KKworICAgIGNzODkw MGFfcHV0X3R4ZGF0YShzYywgc2dfbGlzdCwgc2dfbGVuKTsKK30KKwogLy8g VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIHBhY2tldCBoYXMgYmVl biByZWNlaXZlZC4gIEl0J3Mgam9iIGlzCiAvLyB0byBwcmVwYXJlIHRvIHVu bG9hZCB0aGUgcGFja2V0IGZyb20gdGhlIGhhcmR3YXJlLiAgT25jZSB0aGUg bGVuZ3RoIG9mCiAvLyB0aGUgcGFja2V0IGlzIGtub3duLCB0aGUgdXBwZXIg bGF5ZXIgb2YgdGhlIGRyaXZlciBjYW4gYmUgdG9sZC4gIFdoZW4KIC8vIHRo ZSB1cHBlciBsYXllciBpcyByZWFkeSB0byB1bmxvYWQgdGhlIHBhY2tldCwg dGhlIGludGVybmFsIGZ1bmN0aW9uCiAvLyAnY3M4OTAwYV9yZWN2JyB3aWxs IGJlIGNhbGxlZCB0byBhY3R1YWxseSBmZXRjaCBpdCBmcm9tIHRoZSBoYXJk d2FyZS4KQEAgLTY5MywxNCArNzEzLDMwIEBACiB9CiAKIHN0YXRpYyB2b2lk CiBjczg5MDBhX0J1ZkV2ZW50KHN0cnVjdCBldGhfZHJ2X3NjICpzYywgaW50 IHN0YXQpCiB7CisgICAgY3M4OTAwYV9wcml2X2RhdGFfdCAqY3BkID0gKGNz ODkwMGFfcHJpdl9kYXRhX3QgKilzYy0+ZHJpdmVyX3ByaXZhdGU7CiAgICAg aWYgKHN0YXQgJiBQUF9CdWZDRkdfUnhNaXNzKSB7CiAgICAgfQogICAgIGlm IChzdGF0ICYgUFBfQnVmQ0ZHX1R4VUUpIHsKICAgICB9CisgICAgaWYgKHN0 YXQgJiBQUF9CdWZDRkdfVHhSRFkpIHsKKyAgICAgICAgaWYgKGNwZC0+dHhw ZW5kaW5nKSB7CisjaWZkZWYgQ1lHUEtHX0tFUk5FTAorICAgICAgICAgICAg Y3BkLT50eHN0YXJ0ID0gY3lnX2N1cnJlbnRfdGltZSgpOworI2VuZGlmCisg ICAgICAgICAgICBpZiAoY3BkLT50eHNnX2xlbiA+IDApIHsKKyNpZiBERUJV RyAmIDEKKyAgICAgICAgICAgICAgICBkaWFnX3ByaW50ZigiR290IFR4UkRZ IC0gc3RhcnRpbmcgVFhcbiIpOworI2VuZGlmCisgICAgICAgICAgICAgICAg Y3M4OTAwYV9wdXRfdHhkYXRhKHNjLCBjcGQtPnR4c2dfbGlzdCwgY3BkLT50 eHNnX2xlbik7CisgICAgICAgICAgICAgICAgY3BkLT50eHNnX2xlbiA9IDA7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjcGQtPnR4cGVuZGluZyA9 IGZhbHNlOworICAgICAgICB9CisgICAgfQogfQogCiBzdGF0aWMgdm9pZAog Y3M4OTAwYV9wb2xsKHN0cnVjdCBldGhfZHJ2X3NjICpzYykKIHsK --000e0cd28eae07b2f50469a32357--