From owner-freebsd-net@freebsd.org Mon Jan 11 01:41:21 2016 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4F4E4A6B697 for ; Mon, 11 Jan 2016 01:41:21 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from phabric-backend.rbsd.freebsd.org (unknown [IPv6:2607:fc50:2000:101::1bb:73]) by mx1.freebsd.org (Postfix) with ESMTP id 2FDCC1FF8 for ; Mon, 11 Jan 2016 01:41:21 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by phabric-backend.rbsd.freebsd.org (Postfix, from userid 1346) id 2B391331EEBD; Mon, 11 Jan 2016 01:41:21 +0000 (UTC) Date: Mon, 11 Jan 2016 01:41:21 +0000 To: freebsd-net@freebsd.org From: "sepherosa_gmail.com (Sepherosa Ziehau)" Reply-to: D4824+325+0b1ea329f3d380e8@reviews.freebsd.org Subject: [Differential] [Updated, 294 lines] D4824: hyperv/hn: Implement LRO Message-ID: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , Thread-Topic: D4824: hyperv/hn: Implement LRO X-Herald-Rules: none X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: MTc5M2I0ZWQ4MDNkYjdlMTJiMjY5YThlMzIwIFaTCEE= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_c14163bddd8f0cd1f879d08e10e7134d" X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.20 List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jan 2016 01:41:21 -0000 --b1_c14163bddd8f0cd1f879d08e10e7134d Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: 8bit sepherosa_gmail.com updated this revision to Diff 12098. sepherosa_gmail.com added a comment. Add devclass sysctl for global trust_hosttcp setting. Suggested-by: delphij CHANGES SINCE LAST UPDATE https://reviews.freebsd.org/D4824?vs=12034&id=12098 REVISION DETAIL https://reviews.freebsd.org/D4824 AFFECTED FILES sys/dev/hyperv/netvsc/hv_net_vsc.c sys/dev/hyperv/netvsc/hv_net_vsc.h sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c sys/dev/hyperv/netvsc/hv_rndis.h sys/dev/hyperv/netvsc/hv_rndis_filter.c sys/dev/hyperv/netvsc/hv_rndis_filter.h EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: sepherosa_gmail.com, adrian, royger, decui_microsoft.com, howard0su_gmail.com, kmacy, honzhan_microsoft.com, delphij Cc: transport, freebsd-net-list --b1_c14163bddd8f0cd1f879d08e10e7134d Content-Type: text/x-patch; charset=utf-8; name="D4824.12098.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D4824.12098.patch" ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9ybmRpc19maWx0ZXIuaCBiL3N5 cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9ybmRpc19maWx0ZXIuaAotLS0gYS9zeXMvZGV2L2h5cGVy di9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmgKKysrIGIvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2 X3JuZGlzX2ZpbHRlci5oCkBAIC05OCw2ICs5OCw3IEBACiAKIGludCBodl9yZl9vbl9yZWNlaXZl KG5ldHZzY19kZXYgKm5ldF9kZXYsCiAgICAgc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLCBuZXR2 c2NfcGFja2V0ICpwa3QpOwordm9pZCBodl9yZl9yZWNlaXZlX3JvbGx1cChuZXR2c2NfZGV2ICpu ZXRfZGV2KTsKIGludCBodl9yZl9vbl9kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldmlj ZSwgdm9pZCAqYWRkaXRsX2luZm8pOwogaW50IGh2X3JmX29uX2RldmljZV9yZW1vdmUoc3RydWN0 IGh2X2RldmljZSAqZGV2aWNlLCBib29sZWFuX3QgZGVzdHJveV9jaGFubmVsKTsKIGludCBodl9y Zl9vbl9vcGVuKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSk7CmRpZmYgLS1naXQgYS9zeXMvZGV2 L2h5cGVydi9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmMgYi9zeXMvZGV2L2h5cGVydi9uZXR2c2Mv aHZfcm5kaXNfZmlsdGVyLmMKLS0tIGEvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X3JuZGlzX2Zp bHRlci5jCisrKyBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9ybmRpc19maWx0ZXIuYwpAQCAt OTYzLDMgKzk2MywxNCBAQAogCXJlcXVlc3QtPmhhbHRfY29tcGxldGVfZmxhZyA9IDE7CiB9CiAK Ky8qCisgKiBSTkRJUyBmaWx0ZXIgd2hlbiAiYWxsIiByZWNlcHRpb24gaXMgZG9uZQorICovCit2 b2lkCitodl9yZl9yZWNlaXZlX3JvbGx1cChuZXR2c2NfZGV2ICpuZXRfZGV2KQoreworCXJuZGlz X2RldmljZSAqcm5kaXNfZGV2OworCisJcm5kaXNfZGV2ID0gKHJuZGlzX2RldmljZSAqKW5ldF9k ZXYtPmV4dGVuc2lvbjsKKwluZXR2c2NfcmVjdl9yb2xsdXAocm5kaXNfZGV2LT5uZXRfZGV2LT5k ZXYpOworfQpkaWZmIC0tZ2l0IGEvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X3JuZGlzLmggYi9z eXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXMuaAotLS0gYS9zeXMvZGV2L2h5cGVydi9uZXR2 c2MvaHZfcm5kaXMuaAorKysgYi9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXMuaApAQCAt MTA0OSw2ICsxMDQ5LDcgQEAKIGludCBuZXR2c2NfcmVjdihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZp Y2VfY3R4LCAKICAgICBuZXR2c2NfcGFja2V0ICpwYWNrZXQsIAogICAgIHJuZGlzX3RjcF9pcF9j c3VtX2luZm8gKmNzdW1faW5mbyk7Cit2b2lkIG5ldHZzY19yZWN2X3JvbGx1cChzdHJ1Y3QgaHZf ZGV2aWNlICpkZXZpY2VfY3R4KTsKIAogdm9pZCogaHZfc2V0X3JwcGlfZGF0YShybmRpc19tc2cg KnJuZGlzX21lc2csCiAgICAgdWludDMyX3QgcnBwaV9zaXplLApkaWZmIC0tZ2l0IGEvc3lzL2Rl di9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jIGIvc3lzL2Rldi9oeXBlcnYv bmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCi0tLSBhL3N5cy9kZXYvaHlwZXJ2L25ldHZz Yy9odl9uZXR2c2NfZHJ2X2ZyZWVic2QuYworKysgYi9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZf bmV0dnNjX2Rydl9mcmVlYnNkLmMKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlIDxzeXMvcXVl dWUuaD4KICNpbmNsdWRlIDxzeXMvbG9jay5oPgogI2luY2x1ZGUgPHN5cy9zeC5oPgorI2luY2x1 ZGUgPHN5cy9zeXNjdGwuaD4KIAogI2luY2x1ZGUgPG5ldC9pZi5oPgogI2luY2x1ZGUgPG5ldC9p Zl9hcnAuaD4KQEAgLTEzOCw2ICsxMzksMTUgQEAKICAgICBDU1VNX0lQX0lTQ1NJfENTVU1fSVA2 X1VEUHxDU1VNX0lQNl9UQ1B8Q1NVTV9JUDZfU0NUUHwJCVwKICAgICBDU1VNX0lQNl9UU098Q1NV TV9JUDZfSVNDU0kpCiAKKy8qIFhYWCBtb3ZlIHRvIG5ldGluZXQvdGNwX2xyby5oICovCisjZGVm aW5lIEhOX0xST19ISVdBVF9NQVgJCQkJNjU1MzUKKyNkZWZpbmUgSE5fTFJPX0hJV0FUX0RFRgkJ CQlITl9MUk9fSElXQVRfTUFYCisvKiBZWVkgMipNVFUgaXMgYSBiaXQgcm91Z2gsIGJ1dCBzaG91 bGQgYmUgZ29vZCBlbm91Z2guICovCisjZGVmaW5lIEhOX0xST19ISVdBVF9NVFVMSU0oaWZwKQkJ CSgyICogKGlmcCktPmlmX210dSkKKyNkZWZpbmUgSE5fTFJPX0hJV0FUX0lTVkFMSUQoc2MsIGhp d2F0KQkJCVwKKyAgICAoKGhpd2F0KSA+PSBITl9MUk9fSElXQVRfTVRVTElNKChzYyktPmhuX2lm cCkgfHwJXAorICAgICAoaGl3YXQpIDw9IEhOX0xST19ISVdBVF9NQVgpCisKIC8qCiAgKiBEYXRh IHR5cGVzCiAgKi8KQEAgLTE3MSw2ICsxODEsOSBAQAogLyogVGhlIG9uZSBhbmQgb25seSBvbmUg Ki8KIHN0YXRpYyBzdHJ1Y3QgaHZfbmV0dnNjX2RyaXZlcl9jb250ZXh0IGdfbmV0dnNjX2RydjsK IAorLyogVHJ1c3QgdGNwIHNlZ2VtZW50cyB2ZXJpZmljYXRpb24gb24gaG9zdCBzaWRlLiAqLwor c3RhdGljIGludCBobl90cnVzdF9ob3N0dGNwID0gMDsKK1RVTkFCTEVfSU5UKCJkZXYuaG4udHJ1 c3RfaG9zdHRjcCIsICZobl90cnVzdF9ob3N0dGNwKTsKIAogLyoKICAqIEZvcndhcmQgZGVjbGFy YXRpb25zCkBAIC0xODEsNiArMTk0LDE5IEBACiBzdGF0aWMgaW50ICBobl9pb2N0bChzdHJ1Y3Qg aWZuZXQgKmlmcCwgdV9sb25nIGNtZCwgY2FkZHJfdCBkYXRhKTsKIHN0YXRpYyBpbnQgIGhuX3N0 YXJ0X2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCk7CiBzdGF0aWMgdm9pZCBobl9zdGFydChzdHJ1 Y3QgaWZuZXQgKmlmcCk7CisjaWZkZWYgSE5fTFJPX0hJV0FUCitzdGF0aWMgaW50IGhuX2xyb19o aXdhdF9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CisjZW5kaWYKK3N0YXRpYyBpbnQgaG5f Y2hlY2tfaXBsZW4oY29uc3Qgc3RydWN0IG1idWYgKiwgaW50KTsKKworc3RhdGljIF9faW5saW5l IHZvaWQKK2huX3NldF9scm9faGl3YXQoc3RydWN0IGhuX3NvZnRjICpzYywgaW50IGhpd2F0KQor eworCXNjLT5obl9scm9faGl3YXQgPSBoaXdhdDsKKyNpZmRlZiBITl9MUk9fSElXQVQKKwlzYy0+ aG5fbHJvLmxyb19oaXdhdCA9IHNjLT5obl9scm9faGl3YXQ7CisjZW5kaWYKK30KIAogLyoKICAq IE5ldFZzYyBnZXQgbWVzc2FnZSB0cmFuc3BvcnQgcHJvdG9jb2wgdHlwZSAKQEAgLTMxMCw2ICsz MzYsOCBAQAogCWhuX3NvZnRjX3QgKnNjOwogCWludCB1bml0ID0gZGV2aWNlX2dldF91bml0KGRl dik7CiAJc3RydWN0IGlmbmV0ICppZnA7CisJc3RydWN0IHN5c2N0bF9vaWRfbGlzdCAqY2hpbGQ7 CisJc3RydWN0IHN5c2N0bF9jdHhfbGlzdCAqY3R4OwogCWludCByZXQ7CiAKIAluZXR2c2NfaW5p dCgpOwpAQCAtMzIyLDYgKzM1MCw4IEBACiAJYnplcm8oc2MsIHNpemVvZihobl9zb2Z0Y190KSk7 CiAJc2MtPmhuX3VuaXQgPSB1bml0OwogCXNjLT5obl9kZXYgPSBkZXY7CisJc2MtPmhuX2xyb19o aXdhdCA9IEhOX0xST19ISVdBVF9ERUY7CisJc2MtPmhuX3RydXN0X2hvc3R0Y3AgPSBobl90cnVz dF9ob3N0dGNwOwogCiAJTlZfTE9DS19JTklUKHNjLCAiTmV0VlNDTG9jayIpOwogCkBAIC0zNDks OSArMzc5LDExIEBACiAJICovCiAJaWZwLT5pZl9oZHJsZW4gPSBzaXplb2Yoc3RydWN0IGV0aGVy X3ZsYW5faGVhZGVyKTsKIAlpZnAtPmlmX2NhcGFiaWxpdGllcyB8PQotCSAgICBJRkNBUF9WTEFO X0hXVEFHR0lORyB8IElGQ0FQX1ZMQU5fTVRVIHwgSUZDQVBfSFdDU1VNIHwgSUZDQVBfVFNPOwor CSAgICBJRkNBUF9WTEFOX0hXVEFHR0lORyB8IElGQ0FQX1ZMQU5fTVRVIHwgSUZDQVBfSFdDU1VN IHwgSUZDQVBfVFNPIHwKKwkgICAgSUZDQVBfTFJPOwogCWlmcC0+aWZfY2FwZW5hYmxlIHw9Ci0J ICAgIElGQ0FQX1ZMQU5fSFdUQUdHSU5HIHwgSUZDQVBfVkxBTl9NVFUgfCBJRkNBUF9IV0NTVU0g fCBJRkNBUF9UU087CisJICAgIElGQ0FQX1ZMQU5fSFdUQUdHSU5HIHwgSUZDQVBfVkxBTl9NVFUg fCBJRkNBUF9IV0NTVU0gfCBJRkNBUF9UU08gfAorCSAgICBJRkNBUF9MUk87CiAJLyoKIAkgKiBP bmx5IGVuYWJsZSBVRFAgY2hlY2tzdW0gb2ZmbG9hZGluZyB3aGVuIGl0IGlzIG9uIDIwMTJSMiBv cgogCSAqIGxhdGVyLiBVRFAgY2hlY2tzdW0gb2ZmbG9hZGluZyBkb2Vzbid0IHdvcmsgb24gZWFy bGllcgpAQCAtMzcyLDggKzQwNCw1OSBAQAogCQlzYy0+aG5fY2FycmllciA9IDE7CiAJfQogCisJ dGNwX2xyb19pbml0KCZzYy0+aG5fbHJvKTsKKwkvKiBEcml2ZXIgcHJpdmF0ZSBMUk8gc2V0dGlu Z3MgKi8KKwlzYy0+aG5fbHJvLmlmcCA9IGlmcDsKKyNpZmRlZiBITl9MUk9fSElXQVQKKwlzYy0+ aG5fbHJvLmxyb19oaXdhdCA9IHNjLT5obl9scm9faGl3YXQ7CisjZW5kaWYKKwogCWV0aGVyX2lm YXR0YWNoKGlmcCwgZGV2aWNlX2luZm8ubWFjX2FkZHIpOwogCisJY3R4ID0gZGV2aWNlX2dldF9z eXNjdGxfY3R4KGRldik7CisJY2hpbGQgPSBTWVNDVExfQ0hJTERSRU4oZGV2aWNlX2dldF9zeXNj dGxfdHJlZShkZXYpKTsKKworCVNZU0NUTF9BRERfSU5UKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAi bHJvX3F1ZXVlZCIsCisJICAgIENUTEZMQUdfUlcsICZzYy0+aG5fbHJvLmxyb19xdWV1ZWQsIDAs ICJMUk8gcXVldWVkIik7CisJU1lTQ1RMX0FERF9JTlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJs cm9fZmx1c2hlZCIsCisJICAgIENUTEZMQUdfUlcsICZzYy0+aG5fbHJvLmxyb19mbHVzaGVkLCAw LCAiTFJPIGZsdXNoZWQiKTsKKwlTWVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQsIE9JRF9BVVRP LCAibHJvX3RyaWVkIiwKKwkgICAgQ1RMRkxBR19SVywgJnNjLT5obl9scm9fdHJpZWQsICIjIG9m IExSTyB0cmllcyIpOworI2lmZGVmIEhOX0xST19ISVdBVAorCVNZU0NUTF9BRERfUFJPQyhjdHgs IGNoaWxkLCBPSURfQVVUTywgImxyb19oaXdhdCIsCisJICAgIENUTFRZUEVfSU5UIHwgQ1RMRkxB R19SVywgc2MsIDAsIGhuX2xyb19oaXdhdF9zeXNjdGwsCisJICAgICJJIiwgIkxSTyBoaWdoIHdh dGVybWFyayIpOworI2VuZGlmCisJU1lTQ1RMX0FERF9JTlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8s ICJ0cnVzdF9ob3N0dGNwIiwKKwkgICAgQ1RMRkxBR19SVywgJnNjLT5obl90cnVzdF9ob3N0dGNw LCAwLAorCSAgICAiVHJ1c3QgdGNwIHNlZ2VtZW50IHZlcmlmaWNhdGlvbiBvbiBob3N0IHNpZGUs ICIKKwkgICAgIndoZW4gY3N1bSBpbmZvIGlzIG1pc3NpbmciKTsKKwlTWVNDVExfQUREX1VMT05H KGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiY3N1bV9pcCIsCisJICAgIENUTEZMQUdfUlcsICZzYy0+ aG5fY3N1bV9pcCwgIlJYQ1NVTSBJUCIpOworCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwg T0lEX0FVVE8sICJjc3VtX3RjcCIsCisJICAgIENUTEZMQUdfUlcsICZzYy0+aG5fY3N1bV90Y3As ICJSWENTVU0gVENQIik7CisJU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxkLCBPSURfQVVUTywg ImNzdW1fdHJ1c3RlZCIsCisJICAgIENUTEZMQUdfUlcsICZzYy0+aG5fY3N1bV90cnVzdGVkLAor CSAgICAiIyBvZiBUQ1Agc2VnZW1lbnRzIHRoYXQgd2UgdHJ1c3QgaG9zdCdzIGNzdW0gdmVyaWZp Y2F0aW9uIik7CisKKwlpZiAodW5pdCA9PSAwKSB7CisJCXN0cnVjdCBzeXNjdGxfY3R4X2xpc3Qg KmRjX2N0eDsKKwkJc3RydWN0IHN5c2N0bF9vaWRfbGlzdCAqZGNfY2hpbGQ7CisJCWRldmNsYXNz X3QgZGM7CisKKwkJLyoKKwkJICogQWRkIHN5c2N0bCBub2RlcyBmb3IgZGV2Y2xhc3MKKwkJICov CisJCWRjID0gZGV2aWNlX2dldF9kZXZjbGFzcyhkZXYpOworCQlkY19jdHggPSBkZXZjbGFzc19n ZXRfc3lzY3RsX2N0eChkYyk7CisJCWRjX2NoaWxkID0gU1lTQ1RMX0NISUxEUkVOKGRldmNsYXNz X2dldF9zeXNjdGxfdHJlZShkYykpOworCisJCVNZU0NUTF9BRERfSU5UKGRjX2N0eCwgZGNfY2hp bGQsIE9JRF9BVVRPLCAidHJ1c3RfaG9zdHRjcCIsCisJCSAgICBDVExGTEFHX1JELCAmaG5fdHJ1 c3RfaG9zdHRjcCwgMCwKKwkJICAgICJUcnVzdCB0Y3Agc2VnZW1lbnQgdmVyaWZpY2F0aW9uIG9u IGhvc3Qgc2lkZSwgIgorCQkgICAgIndoZW4gY3N1bSBpbmZvIGlzIG1pc3NpbmcgKGdsb2JhbCBz ZXR0aW5nKSIpOworCX0KKwogCXJldHVybiAoMCk7CiB9CiAKQEAgLTM4Myw2ICs0NjYsNyBAQAog c3RhdGljIGludAogbmV0dnNjX2RldGFjaChkZXZpY2VfdCBkZXYpCiB7CisJc3RydWN0IGhuX3Nv ZnRjICpzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKIAlzdHJ1Y3QgaHZfZGV2aWNlICpodl9k ZXZpY2UgPSB2bWJ1c19nZXRfZGV2Y3R4KGRldik7IAogCiAJaWYgKGJvb3R2ZXJib3NlKQpAQCAt NDAxLDYgKzQ4NSw4IEBACiAKIAlodl9yZl9vbl9kZXZpY2VfcmVtb3ZlKGh2X2RldmljZSwgSFZf UkZfTlZfREVTVFJPWV9DSEFOTkVMKTsKIAorCXRjcF9scm9fZnJlZSgmc2MtPmhuX2xybyk7CisK IAlyZXR1cm4gKDApOwogfQogCkBAIC04ODcsNyArOTczLDcgQEAKIAlzdHJ1Y3QgbWJ1ZiAqbV9u ZXc7CiAJc3RydWN0IGlmbmV0ICppZnA7CiAJZGV2aWNlX3QgZGV2ID0gZGV2aWNlX2N0eC0+ZGV2 aWNlOwotCWludCBzaXplOworCWludCBzaXplLCBkb19scm8gPSAwOwogCiAJaWYgKHNjID09IE5V TEwpIHsKIAkJcmV0dXJuICgwKTsgLyogVE9ETzogS1lTIGhvdyBjYW4gdGhpcyBiZSEgKi8KQEAg LTkzOCwxNiArMTAyNCw1OCBAQAogCQlpZiAoY3N1bV9pbmZvLT5yZWNlaXZlLmlwX2NzdW1fc3Vj Y2VlZGVkKSB7CiAJCQltX25ldy0+bV9wa3RoZHIuY3N1bV9mbGFncyB8PQogCQkJICAgIChDU1VN X0lQX0NIRUNLRUQgfCBDU1VNX0lQX1ZBTElEKTsKKwkJCXNjLT5obl9jc3VtX2lwKys7CiAJCX0K IAogCQkvKiBUQ1AgY3N1bSBvZmZsb2FkICovCiAJCWlmIChjc3VtX2luZm8tPnJlY2VpdmUudGNw X2NzdW1fc3VjY2VlZGVkKSB7CiAJCQltX25ldy0+bV9wa3RoZHIuY3N1bV9mbGFncyB8PQogCQkJ ICAgIChDU1VNX0RBVEFfVkFMSUQgfCBDU1VNX1BTRVVET19IRFIpOwogCQkJbV9uZXctPm1fcGt0 aGRyLmNzdW1fZGF0YSA9IDB4ZmZmZjsKKwkJCXNjLT5obl9jc3VtX3RjcCsrOwogCQl9Ci0JfQog CisJCWlmIChjc3VtX2luZm8tPnJlY2VpdmUuaXBfY3N1bV9zdWNjZWVkZWQgJiYKKwkJICAgIGNz dW1faW5mby0+cmVjZWl2ZS50Y3BfY3N1bV9zdWNjZWVkZWQpCisJCQlkb19scm8gPSAxOworCX0g ZWxzZSB7CisJCWNvbnN0IHN0cnVjdCBldGhlcl9oZWFkZXIgKmVoOworCQl1aW50MTZfdCBldHlw ZTsKKwkJaW50IGhvZmY7CisKKwkJaG9mZiA9IHNpemVvZigqZWgpOworCQlpZiAobV9uZXctPm1f bGVuIDwgaG9mZikKKwkJCWdvdG8gc2tpcDsKKwkJZWggPSBtdG9kKG1fbmV3LCBzdHJ1Y3QgZXRo ZXJfaGVhZGVyICopOworCQlldHlwZSA9IG50b2hzKGVoLT5ldGhlcl90eXBlKTsKKwkJaWYgKGV0 eXBlID09IEVUSEVSVFlQRV9WTEFOKSB7CisJCQljb25zdCBzdHJ1Y3QgZXRoZXJfdmxhbl9oZWFk ZXIgKmV2bDsKKworCQkJaG9mZiA9IHNpemVvZigqZXZsKTsKKwkJCWlmIChtX25ldy0+bV9sZW4g PCBob2ZmKQorCQkJCWdvdG8gc2tpcDsKKwkJCWV2bCA9IG10b2QobV9uZXcsIHN0cnVjdCBldGhl cl92bGFuX2hlYWRlciAqKTsKKwkJCWV0eXBlID0gbnRvaHMoZXZsLT5ldmxfcHJvdG8pOworCQl9 CisKKwkJaWYgKGV0eXBlID09IEVUSEVSVFlQRV9JUCkgeworCQkJaW50IHByOworCisJCQlwciA9 IGhuX2NoZWNrX2lwbGVuKG1fbmV3LCBob2ZmKTsKKwkJCWlmIChwciA9PSBJUFBST1RPX1RDUCkg eworCQkJCWlmIChzYy0+aG5fdHJ1c3RfaG9zdHRjcCkgeworCQkJCQlzYy0+aG5fY3N1bV90cnVz dGVkKys7CisJCQkJCW1fbmV3LT5tX3BrdGhkci5jc3VtX2ZsYWdzIHw9CisJCQkJCSAgIChDU1VN X0lQX0NIRUNLRUQgfCBDU1VNX0lQX1ZBTElEIHwKKwkJCQkJICAgIENTVU1fREFUQV9WQUxJRCB8 IENTVU1fUFNFVURPX0hEUik7CisJCQkJCW1fbmV3LT5tX3BrdGhkci5jc3VtX2RhdGEgPSAweGZm ZmY7CisJCQkJfQorCQkJCS8qIFJlbHkgb24gU1cgY3N1bSB2ZXJpZmljYXRpb24gdGhvdWdoLi4u ICovCisJCQkJZG9fbHJvID0gMTsKKwkJCX0KKwkJfQorCX0KK3NraXA6CiAJaWYgKChwYWNrZXQt PnZsYW5fdGNpICE9IDApICYmCiAJICAgIChpZnAtPmlmX2NhcGVuYWJsZSAmIElGQ0FQX1ZMQU5f SFdUQUdHSU5HKSAhPSAwKSB7CiAJCW1fbmV3LT5tX3BrdGhkci5ldGhlcl92dGFnID0gcGFja2V0 LT52bGFuX3RjaTsKQEAgLTk2MSwxMiArMTA4OSwzNyBAQAogCiAJaWZfaW5jX2NvdW50ZXIoaWZw LCBJRkNPVU5URVJfSVBBQ0tFVFMsIDEpOwogCisJaWYgKChpZnAtPmlmX2NhcGVuYWJsZSAmIElG Q0FQX0xSTykgJiYgZG9fbHJvKSB7CisJCXN0cnVjdCBscm9fY3RybCAqbHJvID0gJnNjLT5obl9s cm87CisKKwkJaWYgKGxyby0+bHJvX2NudCkgeworCQkJc2MtPmhuX2xyb190cmllZCsrOworCQkJ aWYgKHRjcF9scm9fcngobHJvLCBtX25ldywgMCkgPT0gMCkgeworCQkJCS8qIERPTkUhICovCisJ CQkJcmV0dXJuIDA7CisJCQl9CisJCX0KKwl9CisKIAkvKiBXZSdyZSBub3QgaG9sZGluZyB0aGUg bG9jayBoZXJlLCBzbyBkb24ndCByZWxlYXNlIGl0ICovCiAJKCppZnAtPmlmX2lucHV0KShpZnAs IG1fbmV3KTsKIAogCXJldHVybiAoMCk7CiB9CiAKK3ZvaWQKK25ldHZzY19yZWN2X3JvbGx1cChz dHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2VfY3R4KQoreworCWhuX3NvZnRjX3QgKnNjID0gZGV2aWNl X2dldF9zb2Z0YyhkZXZpY2VfY3R4LT5kZXZpY2UpOworCXN0cnVjdCBscm9fY3RybCAqbHJvID0g JnNjLT5obl9scm87CisJc3RydWN0IGxyb19lbnRyeSAqcXVldWVkOworCisJd2hpbGUgKChxdWV1 ZWQgPSBTTElTVF9GSVJTVCgmbHJvLT5scm9fYWN0aXZlKSkgIT0gTlVMTCkgeworCQlTTElTVF9S RU1PVkVfSEVBRCgmbHJvLT5scm9fYWN0aXZlLCBuZXh0KTsKKwkJdGNwX2xyb19mbHVzaChscm8s IHF1ZXVlZCk7CisJfQorfQorCiAvKgogICogUnVsZXMgZm9yIHVzaW5nIHNjLT50ZW1wX3VudXNh YmxlOgogICogMS4gIHNjLT50ZW1wX3VudXNhYmxlIGNhbiBvbmx5IGJlIHJlYWQgb3Igd3JpdHRl biB3aGlsZSBob2xkaW5nIE5WX0xPQ0soKQpAQCAtMTAyMiw3ICsxMTc1LDEzIEBACiAKIAkJLyog T2J0YWluIGFuZCByZWNvcmQgcmVxdWVzdGVkIE1UVSAqLwogCQlpZnAtPmlmX210dSA9IGlmci0+ aWZyX210dTsKLSAJCQorCQkvKgorCQkgKiBNYWtlIHN1cmUgdGhhdCBMUk8gaGlnaCB3YXRlcm1h cmsgaXMgc3RpbGwgdmFsaWQsCisJCSAqIGFmdGVyIE1UVSBjaGFuZ2UgKHRoZSAyKk1UVSBsaW1p dCkuCisJCSAqLworCQlpZiAoIUhOX0xST19ISVdBVF9JU1ZBTElEKHNjLCBzYy0+aG5fbHJvX2hp d2F0KSkKKwkJCWhuX3NldF9scm9faGl3YXQoc2MsIEhOX0xST19ISVdBVF9NVFVMSU0oaWZwKSk7 CisKIAkJZG8gewogCQkJTlZfTE9DSyhzYyk7CiAJCQlpZiAoIXNjLT50ZW1wX3VudXNhYmxlKSB7 CkBAIC0xMTQ3LDYgKzEzMDYsOCBAQAogCQkJCWlmcC0+aWZfY2FwZW5hYmxlIHw9IElGQ0FQX1JY Q1NVTTsKIAkJCX0KIAkJfQorCQlpZiAobWFzayAmIElGQ0FQX0xSTykKKwkJCWlmcC0+aWZfY2Fw ZW5hYmxlIF49IElGQ0FQX0xSTzsKIAogCQlpZiAobWFzayAmIElGQ0FQX1RTTzQpIHsKIAkJCWlm cC0+aWZfY2FwZW5hYmxlIF49IElGQ0FQX1RTTzQ7CkBAIC0xMjkyLDYgKzE0NTMsMTAyIEBACiB9 CiAjZW5kaWYKIAorI2lmZGVmIEhOX0xST19ISVdBVAorc3RhdGljIGludAoraG5fbHJvX2hpd2F0 X3N5c2N0bChTWVNDVExfSEFORExFUl9BUkdTKQoreworCXN0cnVjdCBobl9zb2Z0YyAqc2MgPSBh cmcxOworCWludCBoaXdhdCwgZXJyb3I7CisKKwloaXdhdCA9IHNjLT5obl9scm9faGl3YXQ7CisJ ZXJyb3IgPSBzeXNjdGxfaGFuZGxlX2ludChvaWRwLCAmaGl3YXQsIDAsIHJlcSk7CisJaWYgKGVy cm9yIHx8IHJlcS0+bmV3cHRyID09IE5VTEwpCisJCXJldHVybiBlcnJvcjsKKworCWlmICghSE5f TFJPX0hJV0FUX0lTVkFMSUQoc2MsIGhpd2F0KSkKKwkJcmV0dXJuIEVJTlZBTDsKKworCWlmIChz Yy0+aG5fbHJvX2hpd2F0ICE9IGhpd2F0KQorCQlobl9zZXRfbHJvX2hpd2F0KHNjLCBoaXdhdCk7 CisJcmV0dXJuIDA7Cit9CisjZW5kaWYJLyogSE5fTFJPX0hJV0FUICovCisKK3N0YXRpYyBpbnQK K2huX2NoZWNrX2lwbGVuKGNvbnN0IHN0cnVjdCBtYnVmICptLCBpbnQgaG9mZikKK3sKKwljb25z dCBzdHJ1Y3QgaXAgKmlwOworCWludCBsZW4sIGlwaGxlbiwgaXBsZW47CisJY29uc3Qgc3RydWN0 IHRjcGhkciAqdGg7CisJaW50IHRob2ZmOwkJCQkvKiBUQ1AgZGF0YSBvZmZzZXQgKi8KKworCWxl biA9IGhvZmYgKyBzaXplb2Yoc3RydWN0IGlwKTsKKworCS8qIFRoZSBwYWNrZXQgbXVzdCBiZSBh dCBsZWFzdCB0aGUgc2l6ZSBvZiBhbiBJUCBoZWFkZXIuICovCisJaWYgKG0tPm1fcGt0aGRyLmxl biA8IGxlbikKKwkJcmV0dXJuIElQUFJPVE9fRE9ORTsKKworCS8qIFRoZSBmaXhlZCBJUCBoZWFk ZXIgbXVzdCByZXNpZGUgY29tcGxldGVseSBpbiB0aGUgZmlyc3QgbWJ1Zi4gKi8KKwlpZiAobS0+ bV9sZW4gPCBsZW4pCisJCXJldHVybiBJUFBST1RPX0RPTkU7CisKKwlpcCA9IG10b2RvKG0sIGhv ZmYpOworCisJLyogQm91bmQgY2hlY2sgdGhlIHBhY2tldCdzIHN0YXRlZCBJUCBoZWFkZXIgbGVu Z3RoLiAqLworCWlwaGxlbiA9IGlwLT5pcF9obCA8PCAyOworCWlmIChpcGhsZW4gPCBzaXplb2Yo c3RydWN0IGlwKSkJCS8qIG1pbmltdW0gaGVhZGVyIGxlbmd0aCAqLworCQlyZXR1cm4gSVBQUk9U T19ET05FOworCisJLyogVGhlIGZ1bGwgSVAgaGVhZGVyIG11c3QgcmVzaWRlIGNvbXBsZXRlbHkg aW4gdGhlIG9uZSBtYnVmLiAqLworCWlmIChtLT5tX2xlbiA8IGhvZmYgKyBpcGhsZW4pCisJCXJl dHVybiBJUFBST1RPX0RPTkU7CisKKwlpcGxlbiA9IG50b2hzKGlwLT5pcF9sZW4pOworCisJLyoK KwkgKiBDaGVjayB0aGF0IHRoZSBhbW91bnQgb2YgZGF0YSBpbiB0aGUgYnVmZmVycyBpcyBhcwor CSAqIGF0IGxlYXN0IG11Y2ggYXMgdGhlIElQIGhlYWRlciB3b3VsZCBoYXZlIHVzIGV4cGVjdC4K KwkgKi8KKwlpZiAobS0+bV9wa3RoZHIubGVuIDwgaG9mZiArIGlwbGVuKQorCQlyZXR1cm4gSVBQ Uk9UT19ET05FOworCisJLyoKKwkgKiBJZ25vcmUgSVAgZnJhZ21lbnRzLgorCSAqLworCWlmIChu dG9ocyhpcC0+aXBfb2ZmKSAmIChJUF9PRkZNQVNLIHwgSVBfTUYpKQorCQlyZXR1cm4gSVBQUk9U T19ET05FOworCisJLyoKKwkgKiBUaGUgVENQL0lQIG9yIFVEUC9JUCBoZWFkZXIgbXVzdCBiZSBl bnRpcmVseSBjb250YWluZWQgd2l0aGluCisJICogdGhlIGZpcnN0IGZyYWdtZW50IG9mIGEgcGFj a2V0LgorCSAqLworCXN3aXRjaCAoaXAtPmlwX3ApIHsKKwljYXNlIElQUFJPVE9fVENQOgorCQlp ZiAoaXBsZW4gPCBpcGhsZW4gKyBzaXplb2Yoc3RydWN0IHRjcGhkcikpCisJCQlyZXR1cm4gSVBQ Uk9UT19ET05FOworCQlpZiAobS0+bV9sZW4gPCBob2ZmICsgaXBobGVuICsgc2l6ZW9mKHN0cnVj dCB0Y3BoZHIpKQorCQkJcmV0dXJuIElQUFJPVE9fRE9ORTsKKwkJdGggPSAoY29uc3Qgc3RydWN0 IHRjcGhkciAqKSgoY29uc3QgdWludDhfdCAqKWlwICsgaXBobGVuKTsKKwkJdGhvZmYgPSB0aC0+ dGhfb2ZmIDw8IDI7CisJCWlmICh0aG9mZiA8IHNpemVvZihzdHJ1Y3QgdGNwaGRyKSB8fCB0aG9m ZiArIGlwaGxlbiA+IGlwbGVuKQorCQkJcmV0dXJuIElQUFJPVE9fRE9ORTsKKwkJaWYgKG0tPm1f bGVuIDwgaG9mZiArIGlwaGxlbiArIHRob2ZmKQorCQkJcmV0dXJuIElQUFJPVE9fRE9ORTsKKwkJ YnJlYWs7CisJY2FzZSBJUFBST1RPX1VEUDoKKwkJaWYgKGlwbGVuIDwgaXBobGVuICsgc2l6ZW9m KHN0cnVjdCB1ZHBoZHIpKQorCQkJcmV0dXJuIElQUFJPVE9fRE9ORTsKKwkJaWYgKG0tPm1fbGVu IDwgaG9mZiArIGlwaGxlbiArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSkKKwkJCXJldHVybiBJUFBS T1RPX0RPTkU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWlmIChpcGxlbiA8IGlwaGxlbikKKwkJ CXJldHVybiBJUFBST1RPX0RPTkU7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gaXAtPmlwX3A7Cit9 CisKIHN0YXRpYyBkZXZpY2VfbWV0aG9kX3QgbmV0dnNjX21ldGhvZHNbXSA9IHsKICAgICAgICAg LyogRGV2aWNlIGludGVyZmFjZSAqLwogICAgICAgICBERVZNRVRIT0QoZGV2aWNlX3Byb2JlLCAg ICAgICAgIG5ldHZzY19wcm9iZSksCmRpZmYgLS1naXQgYS9zeXMvZGV2L2h5cGVydi9uZXR2c2Mv aHZfbmV0X3ZzYy5oIGIvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuaAotLS0gYS9z eXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5oCisrKyBiL3N5cy9kZXYvaHlwZXJ2L25l dHZzYy9odl9uZXRfdnNjLmgKQEAgLTQzLDYgKzQzLDggQEAKICNpbmNsdWRlIDxzeXMvbG9jay5o PgogI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KICNpbmNsdWRlIDxzeXMvc3guaD4KKyNpbmNsdWRl IDxuZXRpbmV0L2luLmg+CisjaW5jbHVkZSA8bmV0aW5ldC90Y3BfbHJvLmg+CiAKICNpbmNsdWRl IDxkZXYvaHlwZXJ2L2luY2x1ZGUvaHlwZXJ2Lmg+CiAKQEAgLTk5Myw2ICs5OTUsMTcgQEAKIAlp bnQgICAgICAgICAgICAgdGVtcF91bnVzYWJsZTsKIAlzdHJ1Y3QgaHZfZGV2aWNlICAqaG5fZGV2 X29iajsKIAluZXR2c2NfZGV2ICAJKm5ldF9kZXY7CisKKwlzdHJ1Y3QgbHJvX2N0cmwJaG5fbHJv OworCWludAkJaG5fbHJvX2hpd2F0OworCisJLyogVHJ1c3QgdGNwIHNlZ21lbnRzIHZlcmlmaWNh dGlvbiBvbiBob3N0IHNpZGUgKi8KKwlpbnQJCWhuX3RydXN0X2hvc3R0Y3A7CisKKwl1X2xvbmcJ CWhuX2NzdW1faXA7CisJdV9sb25nCQlobl9jc3VtX3RjcDsKKwl1X2xvbmcJCWhuX2NzdW1fdHJ1 c3RlZDsKKwl1X2xvbmcJCWhuX2xyb190cmllZDsKIH0gaG5fc29mdGNfdDsKIAogCmRpZmYgLS1n aXQgYS9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5jIGIvc3lzL2Rldi9oeXBlcnYv bmV0dnNjL2h2X25ldF92c2MuYwotLS0gYS9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3Zz Yy5jCisrKyBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNjLmMKQEAgLTkxOSw2ICs5 MTksNyBAQAogCSAqLwogCWh2X252X29uX3JlY2VpdmVfY29tcGxldGlvbihkZXZpY2UsIHZtX3hm ZXJfcGFnZV9wa3QtPmQudHJhbnNhY3Rpb25faWQsCiAJICAgIHN0YXR1cyk7CisJaHZfcmZfcmVj ZWl2ZV9yb2xsdXAobmV0X2Rldik7CiB9CiAKIC8qCgo= --b1_c14163bddd8f0cd1f879d08e10e7134d--