From owner-freebsd-net@FreeBSD.ORG Tue Sep 5 22:23:30 2006 Return-Path: X-Original-To: freebsd-net@freebsd.org Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7525016A4DD for ; Tue, 5 Sep 2006 22:23:30 +0000 (UTC) (envelope-from jfvogel@gmail.com) Received: from py-out-1112.google.com (py-out-1112.google.com [64.233.166.180]) by mx1.FreeBSD.org (Postfix) with ESMTP id 084A343D62 for ; Tue, 5 Sep 2006 22:23:25 +0000 (GMT) (envelope-from jfvogel@gmail.com) Received: by py-out-1112.google.com with SMTP id o67so3608804pye for ; Tue, 05 Sep 2006 15:23:25 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=jbxqA+tHO/u0dhDk3EUOBsXEDcpp5NIyOeas/anRtUGyaDtOWQmeUlHHfOEU2Bl+ppZjrj68VHM9+MD5i//os1bvu6mNqkS1fFXfo+eT/1dPjVy57aOBsdgVR3SaX8++yy3RdCdjbOLnj9mn56scbJS491bGnbhl/2+NXB90ZeU= Received: by 10.35.106.15 with SMTP id i15mr13365521pym; Tue, 05 Sep 2006 15:23:25 -0700 (PDT) Received: by 10.35.119.1 with HTTP; Tue, 5 Sep 2006 15:23:18 -0700 (PDT) Message-ID: <2a41acea0609051523w55939cdeu71ee9857f40d1294@mail.gmail.com> Date: Tue, 5 Sep 2006 15:23:18 -0700 From: "Jack Vogel" To: "Andre Oppermann" In-Reply-To: <44FDECB6.2040304@freebsd.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_70789_13758717.1157494998466" References: <2a41acea0609011551v40338539u4eef48d091dd12ab@mail.gmail.com> <44F9384C.9070902@freebsd.org> <2a41acea0609021741y481a04c0r42902166eaba78d7@mail.gmail.com> <20060905162542.GA63869@hub.freebsd.org> <44FDAF08.20407@freebsd.org> <20060905182313.GA85389@hub.freebsd.org> <44FDD65C.6070109@freebsd.org> <2a41acea0609051410i7d968b88ocf240514ff410452@mail.gmail.com> <44FDECB6.2040304@freebsd.org> Cc: freebsd-net , freebsd-current Subject: Re: RFC: TSO patch for current X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Sep 2006 22:23:30 -0000 ------=_Part_70789_13758717.1157494998466 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 9/5/06, Andre Oppermann wrote: > Jack Vogel wrote: > > On 9/5/06, Andre Oppermann wrote: > >> Prafulla Deuskar wrote: > >> > Your patch looks good and is the way to go. > >> > > >> > So after Jack confirms that your patch works with the em driver > >> > would you commit to to -current? > >> > >> Absolutely. :-) > >> > >> > The driver related changes can follow.. > >> > > >> > Later we also need to fix ifconfig so that user can enable/disable > >> TSO on the interface. > >> > >> I'll do that together with the TSO code. > > > > OK, I've built and done some touch testing of this. I like it, the > > driver has > > some counters of the number of TSO bursts it does, and I think I see more > > per netperf test with your patch than mine. > > > > Hard to do real performance testing with all that WITNESS stuff in, but > > I will be making a 6.1 version of your patch to test with since I have my > > driver running on that anyway. > > You can disable WITNESS and INVARIANTS pretty easily in -current and > get the full performance with it. Last time I tried that I think the kernel wouldnt build, but that was like 6 months ago, so I just kicked off a build with this stuff off, and we'll see how it looks :) > > If you do the ifconfig changes there will need to be a small amount of > > code added to em_ioctl() but it should be trivial. > > > > You want me to reissue a driver patch with changes for your code? > > Yes, please do so. I've got a dual-em card which I can test with myself. OK, attached new patch, this one even has the ioctl change so when you get the ifconfig change in it will be ready. Cheers, Jack ------=_Part_70789_13758717.1157494998466 Content-Type: text/x-patch; name="em-current-tso.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="em-current-tso.patch" X-Attachment-Id: f_err9p7yd ZGlmZiAtTmF1ciAvdXNyL3NyYy9zeXMuZGlzdC9kZXYvZW0vaWZfZW0uYyAvdXNyL3NyYy9zeXMv ZGV2L2VtL2lmX2VtLmMKLS0tIC91c3Ivc3JjL3N5cy5kaXN0L2Rldi9lbS9pZl9lbS5jCUZyaSBB dWcgIDQgMDA6NTY6MzMgMjAwNgorKysgL3Vzci9zcmMvc3lzL2Rldi9lbS9pZl9lbS5jCVR1ZSBT ZXAgIDUgMTU6NTg6NDIgMjAwNgpAQCAtNzIsNiArNzIsOCBAQAogI2luY2x1ZGUgPG5ldGluZXQv dGNwLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KIAorI2luY2x1ZGUgPG1hY2hpbmUvaW5f Y2tzdW0uaD4KKwogI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFyLmg+CiAjaW5jbHVkZSA8ZGV2L3Bj aS9wY2lyZWcuaD4KICNpbmNsdWRlIDxkZXYvZW0vaWZfZW1faHcuaD4KQEAgLTIyOSw2ICsyMzEs MTAgQEAKIAkJICAgIHN0cnVjdCBtYnVmICopOwogc3RhdGljIHZvaWQJZW1fdHJhbnNtaXRfY2hl Y2tzdW1fc2V0dXAoc3RydWN0IGFkYXB0ZXIgKiwgc3RydWN0IG1idWYgKiwKIAkJICAgIHVpbnQz Ml90ICosIHVpbnQzMl90ICopOworI2lmZGVmIEVNX1RTTworc3RhdGljIGJvb2xlYW5fdCBlbV90 c29fc2V0dXAoc3RydWN0IGFkYXB0ZXIgKiwgc3RydWN0IG1idWYgKiwgdV9pbnQzMl90ICosCisg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICopOworI2VuZGlmCiBzdGF0aWMgdm9pZAllbV9z ZXRfcHJvbWlzYyhzdHJ1Y3QgYWRhcHRlciAqKTsKIHN0YXRpYyB2b2lkCWVtX2Rpc2FibGVfcHJv bWlzYyhzdHJ1Y3QgYWRhcHRlciAqKTsKIHN0YXRpYyB2b2lkCWVtX3NldF9tdWx0aShzdHJ1Y3Qg YWRhcHRlciAqKTsKQEAgLTMwMiw2ICszMDgsNyBAQAogCiAjZGVmaW5lIEUxMDAwX1RJQ0tTX1RP X1VTRUNTKHRpY2tzKQkoKDEwMjQgKiAodGlja3MpICsgNTAwKSAvIDEwMDApCiAjZGVmaW5lIEUx MDAwX1VTRUNTX1RPX1RJQ0tTKHVzZWNzKQkoKDEwMDAgKiAodXNlY3MpICsgNTEyKSAvIDEwMjQp CisjZGVmaW5lIE1fVFNPX0xFTgkJCTY2CiAKIHN0YXRpYyBpbnQgZW1fdHhfaW50X2RlbGF5X2Rm bHQgPSBFMTAwMF9USUNLU19UT19VU0VDUyhFTV9USURWKTsKIHN0YXRpYyBpbnQgZW1fcnhfaW50 X2RlbGF5X2RmbHQgPSBFMTAwMF9USUNLU19UT19VU0VDUyhFTV9SRFRSKTsKQEAgLTkwNSw2ICs5 MTIsMTAgQEAKIAkJCWlmcC0+aWZfY2FwZW5hYmxlIF49IElGQ0FQX0hXQ1NVTTsKIAkJCXJlaW5p dCA9IDE7CiAJCX0KKwkJaWYgKG1hc2sgJiBJRkNBUF9UU08pIHsKKwkJCWlmcC0+aWZfY2FwZW5h YmxlIF49IElGQ0FQX1RTTzsKKwkJCXJlaW5pdCA9IDE7CisJCX0KIAkJaWYgKG1hc2sgJiBJRkNB UF9WTEFOX0hXVEFHR0lORykgewogCQkJaWZwLT5pZl9jYXBlbmFibGUgXj0gSUZDQVBfVkxBTl9I V1RBR0dJTkc7CiAJCQlyZWluaXQgPSAxOwpAQCAtMTA2MSwxMSArMTA3MiwxNCBAQAogCWlmcC0+ aWZfZHJ2X2ZsYWdzIHw9IElGRl9EUlZfUlVOTklORzsKIAlpZnAtPmlmX2Rydl9mbGFncyAmPSB+ SUZGX0RSVl9PQUNUSVZFOwogCisJaWZwLT5pZl9od2Fzc2lzdCA9IDA7CiAJaWYgKGFkYXB0ZXIt Pmh3Lm1hY190eXBlID49IGVtXzgyNTQzKSB7CiAJCWlmIChpZnAtPmlmX2NhcGVuYWJsZSAmIElG Q0FQX1RYQ1NVTSkKIAkJCWlmcC0+aWZfaHdhc3Npc3QgPSBFTV9DSEVDS1NVTV9GRUFUVVJFUzsK LQkJZWxzZQotCQkJaWZwLT5pZl9od2Fzc2lzdCA9IDA7CisjaWZkZWYgRU1fVFNPCisJCWlmIChp ZnAtPmlmX2NhcGVuYWJsZSAmIElGQ0FQX1RTTykKKwkJCWlmcC0+aWZfaHdhc3Npc3QgfD0gRU1f VENQU0VHX0ZFQVRVUkVTOworI2VuZGlmCiAJfQogCiAJY2FsbG91dF9yZXNldCgmYWRhcHRlci0+ dGltZXIsIGh6LCBlbV9sb2NhbF90aW1lciwgYWRhcHRlcik7CkBAIC0xNDE2LDExICsxNDMwLDE3 IEBACiAJc3RydWN0IG1fdGFnCQkqbXRhZzsKIAl1aW50MzJfdAkJdHhkX3VwcGVyLCB0eGRfbG93 ZXIsIHR4ZF91c2VkLCB0eGRfc2F2ZWQ7CiAJaW50CQkJbnNlZ3MsIGksIGo7Ci0JaW50CQkJZXJy b3I7CisJaW50CQkJZXJyb3IsIGRvX3RzbywgdHNvX2Rlc2MgPSAwOwogCiAJbV9oZWFkID0gKm1f aGVhZHA7CiAJY3VycmVudF90eF9kZXNjID0gTlVMTDsKLQl0eGRfdXNlZCA9IHR4ZF9zYXZlZCA9 IDA7CisJdHhkX3VwcGVyID0gdHhkX2xvd2VyID0gdHhkX3VzZWQgPSB0eGRfc2F2ZWQgPSAwOwor CisjaWZkZWYgRU1fVFNPCisgICAgICAgIGRvX3RzbyA9ICgobV9oZWFkLT5tX3BrdGhkci5jc3Vt X2ZsYWdzICYgQ1NVTV9UU08pICE9IDApOworI2Vsc2UKKyAgICAgICAgZG9fdHNvID0gMDsKKyNl bmRpZgogCiAJLyoKIAkgKiBGb3JjZSBhIGNsZWFudXAgaWYgbnVtYmVyIG9mIFRYIGRlc2NyaXB0 b3JzCkBAIC0xNDczLDYgKzE0OTMsMTcgQEAKIAkJKm1faGVhZHAgPSBtX2hlYWQ7CiAJfQogCisg ICAgICAgIC8qCisgICAgICAgICAqIFRTTyB3b3JrYXJvdW5kOgorICAgICAgICAgKiAgSWYgYW4g bWJ1ZiBpcyBvbmx5IGhlYWRlciB3ZSBuZWVkCisgICAgICAgICAqICAgICB0byBwdWxsIDQgYnl0 ZXMgb2YgZGF0YSBpbnRvIGl0LgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGRvX3RzbyAmJiAo bV9oZWFkLT5tX2xlbiA8PSBNX1RTT19MRU4pKSB7CisgICAgICAgICAgICAgICAgbV9oZWFkID0g bV9wdWxsdXAobV9oZWFkLCBNX1RTT19MRU4gKyA0KTsKKyAgICAgICAgICAgICAgICBpZiAobV9o ZWFkID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKEVOT0JVRlMpOwor ICAgICAgICB9CisKIAkvKgogCSAqIE1hcCB0aGUgcGFja2V0IGZvciBETUEuCiAJICovCkBAIC0x NDg3LDIzICsxNTE4LDQzIEBACiAJfQogCUtBU1NFUlQobnNlZ3MgIT0gMCwgKCJlbV9lbmNhcDog ZW1wdHkgcGFja2V0IikpOwogCi0JaWYgKG5zZWdzID4gYWRhcHRlci0+bnVtX3R4X2Rlc2NfYXZh aWwpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogVFNPIEhhcmR3YXJlIHdvcmthcm91bmQsIGlm IHRoaXMgcGFja2V0IGlzIG5vdAorICAgICAgICAgKiBUU08sIGFuZCBpcyBvbmx5IGEgc2luZ2xl IGRlc2NyaXB0b3IgbG9uZywgYW5kCisgICAgICAgICAqIGl0IGZvbGxvd3MgYSBUU08gYnVyc3Qs IHRoZW4gd2UgbmVlZCB0byBhZGQgYQorICAgICAgICAgKiBzZW50aW5lbCBkZXNjcmlwdG9yIHRv IHByZXZlbnQgcHJlbWF0dXJlIHdyaXRlYmFjay4KKyAgICAgICAgICovCisgICAgICAgIGlmICgo ZG9fdHNvID09IDApICYmIChhZGFwdGVyLT50eF90c28gPT0gVFJVRSkpIHsKKyAgICAgICAgICAg ICAgICBpZiAobnNlZ3MgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRzb19kZXNjID0g VFJVRTsKKyAgICAgICAgICAgICAgICBhZGFwdGVyLT50eF90c28gPSBGQUxTRTsKKyAgICAgICAg fQorCisJaWYgKG5zZWdzID4gYWRhcHRlci0+bnVtX3R4X2Rlc2NfYXZhaWwgLSAyKSB7CiAJCWFk YXB0ZXItPm5vX3R4X2Rlc2NfYXZhaWwyKys7CiAJCWVycm9yID0gRU5PQlVGUzsKIAkJZ290byBl bmNhcF9mYWlsOwogCX0KIAotCWlmIChpZnAtPmlmX2h3YXNzaXN0ID4gMCkKLQkJZW1fdHJhbnNt aXRfY2hlY2tzdW1fc2V0dXAoYWRhcHRlciwgIG1faGVhZCwgJnR4ZF91cHBlciwgJnR4ZF9sb3dl cik7Ci0JZWxzZQotCQl0eGRfdXBwZXIgPSB0eGRfbG93ZXIgPSAwOworICAgICAgICAvKiBEbyBo YXJkd2FyZSBhc3Npc3RzICovCisgICAgICAgIGlmICggaWZwLT5pZl9od2Fzc2lzdCA+IDApIHsK KyNpZmRlZiBFTV9UU08KKyAgICAgICAgICAgICAgICBpZiAoZW1fdHNvX3NldHVwKGFkYXB0ZXIs IG1faGVhZCwgJnR4ZF91cHBlciwgJnR4ZF9sb3dlcikpIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIC8qIHdlIG5lZWQgdG8gbWFrZSBhIGZpbmFsIHNlbnRpbmVsIHRyYW5zbWl0IGRlc2MgKi8K KyAgICAgICAgICAgICAgICAgICAgICAgIHRzb19kZXNjID0gVFJVRTsKKyAgICAgICAgICAgICAg ICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgZW1fdHJhbnNtaXRfY2hl Y2tzdW1fc2V0dXAoYWRhcHRlciwgIG1faGVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmdHhkX3VwcGVyLCAmdHhkX2xvd2VyKTsKKyAgICAgICAgfQogCiAJaSA9IGFkYXB0ZXItPm5l eHRfYXZhaWxfdHhfZGVzYzsKLQlpZiAoYWRhcHRlci0+cGNpeF84MjU0NCkgeworCWlmIChhZGFw dGVyLT5wY2l4XzgyNTQ0KQogCQl0eGRfc2F2ZWQgPSBpOwotCQl0eGRfdXNlZCA9IDA7Ci0JfQor CiAJZm9yIChqID0gMDsgaiA8IG5zZWdzOyBqKyspIHsKKyAgICAgICAgICAgICAgICBidXNfc2l6 ZV90IHNlZ19sZW47CisgICAgICAgICAgICAgICAgYnVzX2FkZHJfdCBzZWdfYWRkcjsKIAkJLyog SWYgYWRhcHRlciBpcyA4MjU0NCBhbmQgb24gUENJWCBidXMuICovCiAJCWlmKGFkYXB0ZXItPnBj aXhfODI1NDQpIHsKIAkJCURFU0NfQVJSQVkJZGVzY19hcnJheTsKQEAgLTE1MzcsMjYgKzE1ODgs NTcgQEAKIAkJCQl0eGRfdXNlZCsrOwogCQkJfQogCQl9IGVsc2UgewotCQkJdHhfYnVmZmVyID0g JmFkYXB0ZXItPnR4X2J1ZmZlcl9hcmVhW2ldOwotCQkJY3VycmVudF90eF9kZXNjID0gJmFkYXB0 ZXItPnR4X2Rlc2NfYmFzZVtpXTsKLQotCQkJY3VycmVudF90eF9kZXNjLT5idWZmZXJfYWRkciA9 IGh0b2xlNjQoc2Vnc1tqXS5kc19hZGRyKTsKLQkJCWN1cnJlbnRfdHhfZGVzYy0+bG93ZXIuZGF0 YSA9IGh0b2xlMzIoCi0JCQkJYWRhcHRlci0+dHhkX2NtZCB8IHR4ZF9sb3dlciB8IHNlZ3Nbal0u ZHNfbGVuKTsKLQkJCWN1cnJlbnRfdHhfZGVzYy0+dXBwZXIuZGF0YSA9IGh0b2xlMzIodHhkX3Vw cGVyKTsKLQotCQkJaWYgKCsraSA9PSBhZGFwdGVyLT5udW1fdHhfZGVzYykKLQkJCQlpID0gMDsK LQotCQkJdHhfYnVmZmVyLT5tX2hlYWQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICB0 eF9idWZmZXIgPSAmYWRhcHRlci0+dHhfYnVmZmVyX2FyZWFbaV07CisgICAgICAgICAgICAgICAg ICAgICAgICBjdXJyZW50X3R4X2Rlc2MgPSAmYWRhcHRlci0+dHhfZGVzY19iYXNlW2ldOworICAg ICAgICAgICAgICAgICAgICAgICAgc2VnX2FkZHIgPSBodG9sZTY0KHNlZ3Nbal0uZHNfYWRkcik7 CisgICAgICAgICAgICAgICAgICAgICAgICBzZWdfbGVuICA9IHNlZ3Nbal0uZHNfbGVuOworICAg ICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICoqIFRTTyBX b3JrYXJvdW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgKiogSWYgdGhpcyBpcyB0aGUgbGFz dCBkZXNjcmlwdG9yLCB3ZSB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAqKiBzcGxp dCBpdCBzbyB3ZSBoYXZlIGEgc21hbGwgZmluYWwgc2VudGluZWwKKyAgICAgICAgICAgICAgICAg ICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHNvX2Rlc2MgJiYgKGogPT0g KG5zZWdzIC0xKSkgJiYgKHNlZ19sZW4gPiA4KSkgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWdfbGVuIC09IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1 cnJlbnRfdHhfZGVzYy0+YnVmZmVyX2FkZHIgPSBzZWdfYWRkcjsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3VycmVudF90eF9kZXNjLT5sb3dlci5kYXRhID0gaHRvbGUzMigKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRlci0+dHhkX2NtZCB8IHR4ZF9sb3dl ciB8IHNlZ19sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3R4 X2Rlc2MtPnVwcGVyLmRhdGEgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aHRvbGUzMih0eGRfdXBwZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo KytpID09IGFkYXB0ZXItPm51bV90eF9kZXNjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBO b3cgbWFrZSB0aGUgc2VudGluZWwgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Kyt0eGRfdXNlZDsgLyogdXNpbmcgYW4gZXh0cmEgdHhkICovCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGN1cnJlbnRfdHhfZGVzYyA9ICZhZGFwdGVyLT50eF9kZXNjX2Jhc2VbaV07 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4X2J1ZmZlciA9ICZhZGFwdGVyLT50 eF9idWZmZXJfYXJlYVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVu dF90eF9kZXNjLT5idWZmZXJfYWRkciA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWdfYWRkciArIHNlZ19sZW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGN1cnJlbnRfdHhfZGVzYy0+bG93ZXIuZGF0YSA9IGh0b2xlMzIoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFkYXB0ZXItPnR4ZF9jbWQgfCB0eGRfbG93ZXIgfCA0KTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF90eF9kZXNjLT51cHBlci5kYXRhID0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0b2xlMzIodHhkX3VwcGVyKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsraSA9PSBhZGFwdGVyLT5udW1f dHhfZGVzYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsK KyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN1cnJlbnRfdHhfZGVzYy0+YnVmZmVyX2FkZHIgPSBzZWdfYWRkcjsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF90eF9kZXNjLT5sb3dlci5kYXRhID0g aHRvbGUzMigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRlci0+dHhkX2Nt ZCB8IHR4ZF9sb3dlciB8IHNlZ19sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjdXJyZW50X3R4X2Rlc2MtPnVwcGVyLmRhdGEgPQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaHRvbGUzMih0eGRfdXBwZXIpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiAoKytpID09IGFkYXB0ZXItPm51bV90eF9kZXNjKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICAgICAgdHhfYnVmZmVyLT5tX2hlYWQgPSBOVUxMOwogCQl9 CiAJfQogCiAJYWRhcHRlci0+bmV4dF9hdmFpbF90eF9kZXNjID0gaTsKIAlpZiAoYWRhcHRlci0+ cGNpeF84MjU0NCkKIAkJYWRhcHRlci0+bnVtX3R4X2Rlc2NfYXZhaWwgLT0gdHhkX3VzZWQ7Ci0J ZWxzZQorCWVsc2UgewogCQlhZGFwdGVyLT5udW1fdHhfZGVzY19hdmFpbCAtPSBuc2VnczsKKyAg ICAgICAgICAgICAgICBpZiAodHNvX2Rlc2MpIC8qIFRTTyB1c2VkIGFuIGV4dHJhIGZvciBzZW50 aW5lbCAqLworICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRlci0+bnVtX3R4X2Rlc2NfYXZh aWwgLT0gdHhkX3VzZWQ7CisgICAgICAgIH0KIAogCWlmIChtdGFnICE9IE5VTEwpIHsKIAkJLyog U2V0IHRoZSB2bGFuIGlkLiAqLwpAQCAtMjIyNiw2ICsyMzA4LDE1IEBACiAJCWlmcC0+aWZfY2Fw ZW5hYmxlIHw9IElGQ0FQX0hXQ1NVTSB8IElGQ0FQX1ZMQU5fSFdDU1VNOwogCX0KIAorI2lmZGVm IEVNX1RTTworICAgICAgICAvKiBFbmFibGUgVFNPIGlmIGF2YWlsYWJsZSAqLworICAgICAgICBp ZiAoKGFkYXB0ZXItPmh3Lm1hY190eXBlID4gZW1fODI1NDQpICYmCisgICAgICAgICAgICAoYWRh cHRlci0+aHcubWFjX3R5cGUgIT0gZW1fODI1NDcpKSB7CisgICAgICAgICAgICAgICAgaWZwLT5p Zl9jYXBhYmlsaXRpZXMgfD0gSUZDQVBfVFNPOworICAgICAgICAgICAgICAgIGlmcC0+aWZfY2Fw ZW5hYmxlIHw9IElGQ0FQX1RTTzsKKyAgICAgICAgfQorI2VuZGlmCisKIAkvKgogCSAqIFRlbGwg dGhlIHVwcGVyIGxheWVyKHMpIHdlIHN1cHBvcnQgbG9uZyBmcmFtZXMuCiAJICovCkBAIC0yNDM2 LDE1ICsyNTI3LDI3IEBACiBzdGF0aWMgaW50CiBlbV9zZXR1cF90cmFuc21pdF9zdHJ1Y3R1cmVz KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQogeworI2lmZGVmIEVNX1RTTworICAgICAgICBzdHJ1 Y3QgaWZuZXQgICAqaWZwID0gYWRhcHRlci0+aWZwOworI2VuZGlmCiAJZGV2aWNlX3QgZGV2ID0g YWRhcHRlci0+ZGV2OwogCXN0cnVjdCBlbV9idWZmZXIgKnR4X2J1ZmZlcjsKLQlidXNfc2l6ZV90 IHNpemU7CisJYnVzX3NpemVfdCBzaXplLCBzZWdzaXplOwogCWludCBlcnJvciwgaTsKIAogCS8q CiAJICogU2V0dXAgRE1BIGRlc2NyaXB0b3IgYXJlYXMuCiAJICovCi0Jc2l6ZSA9IHJvdW5kdXAy KGFkYXB0ZXItPmh3Lm1heF9mcmFtZV9zaXplLCBNQ0xCWVRFUyk7CisJc2Vnc2l6ZSA9IHNpemUg PSByb3VuZHVwMihhZGFwdGVyLT5ody5tYXhfZnJhbWVfc2l6ZSwgTUNMQllURVMpOworCisjaWZk ZWYgRU1fVFNPCisgICAgICAgIC8qIE92ZXJyaWRlcyBmb3IgVFNPIC0gd2FudCBsYXJnZSBzaXpl cyAqLworICAgICAgICBpZiAoaWZwLT5pZl9od2Fzc2lzdCAmIEVNX1RDUFNFR19GRUFUVVJFUykg eworICAgICAgICAgICAgICAgIHNpemUgPSBFTV9UU09fU0laRTsKKyAgICAgICAgICAgICAgICBz ZWdzaXplID0gUEFHRV9TSVpFOworICAgICAgICB9CisjZW5kaWYKKwogCWlmICgoZXJyb3IgPSBi dXNfZG1hX3RhZ19jcmVhdGUoTlVMTCwJCS8qIHBhcmVudCAqLwogCQkJCTEsIDAsCQkJLyogYWxp Z25tZW50LCBib3VuZHMgKi8KIAkJCQlCVVNfU1BBQ0VfTUFYQUREUiwJLyogbG93YWRkciAqLwpA QCAtMjQ1Miw3ICsyNTU1LDcgQEAKIAkJCQlOVUxMLCBOVUxMLAkJLyogZmlsdGVyLCBmaWx0ZXJh cmcgKi8KIAkJCQlzaXplLAkJCS8qIG1heHNpemUgKi8KIAkJCQlFTV9NQVhfU0NBVFRFUiwJCS8q IG5zZWdtZW50cyAqLwotCQkJCXNpemUsCQkJLyogbWF4c2Vnc2l6ZSAqLworCQkJCXNlZ3NpemUs CQkvKiBtYXhzZWdzaXplICovCiAJCQkJMCwJCQkvKiBmbGFncyAqLwogCQkJCU5VTEwsCQkvKiBs b2NrZnVuYyAqLwogCQkJCU5VTEwsCQkvKiBsb2NrYXJnICovCkBAIC0yNzEzLDYgKzI4MTYsODcg QEAKIAlhZGFwdGVyLT5uZXh0X2F2YWlsX3R4X2Rlc2MgPSBjdXJyX3R4ZDsKIH0KIAorI2lmZGVm IEVNX1RTTworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgU2V0dXAgd29yayBmb3IgaGFyZHdhcmUg c2VnbWVudGF0aW9uIG9mZmxvYWQgKFRTTykKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBi b29sZWFuX3QKK2VtX3Rzb19zZXR1cChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwKKyAgICAgICAg ICAgICBzdHJ1Y3QgbWJ1ZiAqbXAsCisgICAgICAgICAgICAgdV9pbnQzMl90ICp0eGRfdXBwZXIs CisgICAgICAgICAgICAgdV9pbnQzMl90ICp0eGRfbG93ZXIpCit7CisgICAgICAgIHN0cnVjdCBl bV9jb250ZXh0X2Rlc2MgKlRYRDsKKyAgICAgICAgc3RydWN0IGVtX2J1ZmZlciAqdHhfYnVmZmVy OworICAgICAgICBzdHJ1Y3QgaXAgKmlwOworICAgICAgICBzdHJ1Y3QgdGNwaGRyICp0aDsKKyAg ICAgICAgaW50IGN1cnJfdHhkLCBoZHJfbGVuLCBpcF9obGVuLCB0Y3BfaGxlbjsKKworICAgICAg ICBpZiAoKChtcC0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fVFNPKSA9PSAwKSB8fAorICAg ICAgICAgICAgKG1wLT5tX3BrdGhkci5sZW4gPD0gRTEwMDBfVFhfQlVGRkVSX1NJWkUpKSB7Cisg ICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgKnR4ZF9s b3dlciA9IChFMTAwMF9UWERfQ01EX0RFWFQgfAorICAgICAgICAgICAgICAgICAgICAgIEUxMDAw X1RYRF9EVFlQX0QgfAorICAgICAgICAgICAgICAgICAgICAgIEUxMDAwX1RYRF9DTURfVFNFKTsK KworICAgICAgICAqdHhkX3VwcGVyID0gKEUxMDAwX1RYRF9QT1BUU19JWFNNIHwKKyAgICAgICAg ICAgICAgICAgICAgICBFMTAwMF9UWERfUE9QVFNfVFhTTSkgPDwgODsKKworICAgICAgICBjdXJy X3R4ZCA9IGFkYXB0ZXItPm5leHRfYXZhaWxfdHhfZGVzYzsKKyAgICAgICAgdHhfYnVmZmVyID0g JmFkYXB0ZXItPnR4X2J1ZmZlcl9hcmVhW2N1cnJfdHhkXTsKKyAgICAgICAgVFhEID0gKHN0cnVj dCBlbV9jb250ZXh0X2Rlc2MgKikgJmFkYXB0ZXItPnR4X2Rlc2NfYmFzZVtjdXJyX3R4ZF07CisK KyAgICAgICAgbXAtPm1fZGF0YSArPSBzaXplb2Yoc3RydWN0IGV0aGVyX2hlYWRlcik7CisgICAg ICAgIGlwID0gbXRvZChtcCwgc3RydWN0IGlwICopOworICAgICAgICBpcC0+aXBfbGVuID0gMDsK KyAgICAgICAgaXAtPmlwX3N1bSA9IDA7CisgICAgICAgIGlwX2hsZW4gPSBpcC0+aXBfaGwgPDwg MiA7CisgICAgICAgIHRoID0gKHN0cnVjdCB0Y3BoZHIgKikoKGNhZGRyX3QpaXAgKyBpcF9obGVu KTsKKyAgICAgICAgdGNwX2hsZW4gPSB0aC0+dGhfb2ZmIDw8IDI7CisKKyAgICAgICAgaGRyX2xl biA9IEVUSEVSX0hEUl9MRU4gKyBpcF9obGVuICsgdGNwX2hsZW47CisgICAgICAgIHRoLT50aF9z dW0gPSBpbl9wc2V1ZG8oaXAtPmlwX3NyYy5zX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlwLT5pcF9kc3Quc19hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBodG9ucyhJUFBST1RPX1RDUCkpOworCisgICAgICAgIG1wLT5tX2RhdGEgLT0gc2l6ZW9m KHN0cnVjdCBldGhlcl9oZWFkZXIpOworICAgICAgICBUWEQtPmxvd2VyX3NldHVwLmlwX2ZpZWxk cy5pcGNzcyA9IEVUSEVSX0hEUl9MRU47CisgICAgICAgIFRYRC0+bG93ZXJfc2V0dXAuaXBfZmll bGRzLmlwY3NvID0KKyAgICAgICAgICAgICAgICBFVEhFUl9IRFJfTEVOICsgb2Zmc2V0b2Yoc3Ry dWN0IGlwLCBpcF9zdW0pOworICAgICAgICBUWEQtPmxvd2VyX3NldHVwLmlwX2ZpZWxkcy5pcGNz ZSA9CisgICAgICAgICAgICAgICAgaHRvbGUxNihFVEhFUl9IRFJfTEVOICsgaXBfaGxlbiAtIDEp OworCisgICAgICAgIFRYRC0+dXBwZXJfc2V0dXAudGNwX2ZpZWxkcy50dWNzcyA9CisgICAgICAg ICAgICAgICAgRVRIRVJfSERSX0xFTiArIGlwX2hsZW47CisgICAgICAgIFRYRC0+dXBwZXJfc2V0 dXAudGNwX2ZpZWxkcy50dWNzZSA9IDA7CisgICAgICAgIFRYRC0+dXBwZXJfc2V0dXAudGNwX2Zp ZWxkcy50dWNzbyA9CisgICAgICAgICAgICAgICAgRVRIRVJfSERSX0xFTiArIGlwX2hsZW4gKwor ICAgICAgICAgICAgICAgIG9mZnNldG9mKHN0cnVjdCB0Y3BoZHIsIHRoX3N1bSk7CisgICAgICAg IFRYRC0+dGNwX3NlZ19zZXR1cC5maWVsZHMubXNzID0gaHRvbGUxNihtcC0+bV9wa3RoZHIudHNv X3NlZ3N6KTsKKyAgICAgICAgVFhELT50Y3Bfc2VnX3NldHVwLmZpZWxkcy5oZHJfbGVuID0gaGRy X2xlbjsKKyAgICAgICAgVFhELT5jbWRfYW5kX2xlbmd0aCA9IGh0b2xlMzIoYWRhcHRlci0+dHhk X2NtZCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUxMDAwX1RYRF9DTURfREVY VCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUxMDAwX1RYRF9DTURfVFNFIHwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRTEwMDBfVFhEX0NNRF9JUCB8IEUxMDAw X1RYRF9DTURfVENQIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1wLT5tX3Br dGhkci5sZW4gLSAoaGRyX2xlbikpKTsKKworICAgICAgICB0eF9idWZmZXItPm1faGVhZCA9IE5V TEw7CisKKyAgICAgICAgaWYgKCsrY3Vycl90eGQgPT0gYWRhcHRlci0+bnVtX3R4X2Rlc2MpCisg ICAgICAgICAgICAgICAgY3Vycl90eGQgPSAwOworCisgICAgICAgIGFkYXB0ZXItPm51bV90eF9k ZXNjX2F2YWlsLS07CisgICAgICAgIGFkYXB0ZXItPm5leHRfYXZhaWxfdHhfZGVzYyA9IGN1cnJf dHhkOworICAgICAgICBhZGFwdGVyLT50eF90c28gPSBUUlVFOworCisgICAgICAgIHJldHVybiBU UlVFOworfQorI2VuZGlmIC8qIEVNX1RTTyAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqICBF eGFtaW5lIGVhY2ggdHhfYnVmZmVyIGluIHRoZSB1c2VkIHF1ZXVlLiBJZiB0aGUgaGFyZHdhcmUg aXMgZG9uZQpAQCAtMzYzOSw2ICszODIzLDEyIEBACiAJICAgIChsb25nIGxvbmcpYWRhcHRlci0+ c3RhdHMuZ3ByYyk7CiAJZGV2aWNlX3ByaW50ZihkZXYsICJHb29kIFBhY2tldHMgWG10ZCA9ICVs bGRcbiIsCiAJICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMuZ3B0Yyk7CisjaWZkZWYgRU1f VFNPCisgICAgICAgIGRldmljZV9wcmludGYoZGV2LCAiVFNPIENvbnRleHRzIFhtdGQgPSAlbGxk XG4iLAorICAgICAgICAgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy50c2N0Yyk7CisgICAg ICAgIGRldmljZV9wcmludGYoZGV2LCAiVFNPIENvbnRleHRzIEZhaWxlZCA9ICVsbGRcbiIsCisg ICAgICAgICAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnRzY3RmYyk7CisjZW5kaWYKIH0K IAogc3RhdGljIGludApkaWZmIC1OYXVyIC91c3Ivc3JjL3N5cy5kaXN0L2Rldi9lbS9pZl9lbS5o IC91c3Ivc3JjL3N5cy9kZXYvZW0vaWZfZW0uaAotLS0gL3Vzci9zcmMvc3lzLmRpc3QvZGV2L2Vt L2lmX2VtLmgJVGh1IEF1ZyAgMyAxMjowNTowNCAyMDA2CisrKyAvdXNyL3NyYy9zeXMvZGV2L2Vt L2lmX2VtLmgJVHVlIFNlcCAgNSAxNDoyOToxOSAyMDA2CkBAIC0zNiw2ICszNiw5IEBACiAjaWZu ZGVmIF9FTV9IX0RFRklORURfCiAjZGVmaW5lIF9FTV9IX0RFRklORURfCiAKKy8qIFVuZGVmaW5l IHRoaXMgdG8gcmVtb3ZlIFRTTyBmcm9tIGRyaXZlciAqLworI2RlZmluZSBFTV9UU08KKwogLyog VHVuYWJsZXMgKi8KIAogLyoKQEAgLTEzOCw2ICsxNDEsMTEgQEAKICNkZWZpbmUgRU1fQ0hFQ0tT VU1fRkVBVFVSRVMgICAgICAgICAgICAoQ1NVTV9UQ1AgfCBDU1VNX1VEUCkKIAogLyoKKyAqIElu Zm9ybSB0aGUgc3RhY2sgYWJvdXQgdHJhbnNtaXQgc2VnbWVudGF0aW9uIG9mZmxvYWQgY2FwYWJp bGl0aWVzLgorICovCisjZGVmaW5lIEVNX1RDUFNFR19GRUFUVVJFUwkJQ1NVTV9UU08KKworLyoK ICAqIFRoaXMgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBkdXJhdGlvbiBvZiB0cmFuc21pdCB3YXRj aGRvZyB0aW1lci4KICAqLwogI2RlZmluZSBFTV9UWF9USU1FT1VUICAgICAgICAgICAgICAgICAg IDUgICAgLyogc2V0IHRvIDUgc2Vjb25kcyAqLwpAQCAtMjI1LDYgKzIzMyw3IEBACiAjZGVmaW5l IEVNX1JYQlVGRkVSXzE2Mzg0ICAgICAgMTYzODQKIAogI2RlZmluZSBFTV9NQVhfU0NBVFRFUiAg ICAgICAgICAgIDY0CisjZGVmaW5lIEVNX1RTT19TSVpFCQk2NTUzNQogCiB0eXBlZGVmIGVudW0g X1hTVU1fQ09OVEVYVF9UIHsKIAlPRkZMT0FEX05PTkUsCkBAIC0zMDcsNiArMzE2LDcgQEAKICAg ICAgICAgdWludDMyX3QJCXR4ZF9jbWQ7CiAJc3RydWN0IGVtX2J1ZmZlcgkqdHhfYnVmZmVyX2Fy ZWE7CiAJYnVzX2RtYV90YWdfdAkJdHh0YWc7CQkvKiBkbWEgdGFnIGZvciB0eCAqLworCXVpbnQz Ml90CQl0eF90c287CQkvKiBsYXN0IHR4IHdhcyB0c28gKi8KIAogCS8qIAogCSAqIFJlY2VpdmUg ZGVmaW5pdGlvbnMK ------=_Part_70789_13758717.1157494998466--