From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gDp4y-00087X-Qd for ath10k@lists.infradead.org; Sat, 20 Oct 2018 11:07:10 +0000 From: Rajkumar Manoharan Subject: [PATCH 4/6] ath9k: Switch to mac80211 TXQ scheduling and airtime APIs Date: Sat, 20 Oct 2018 04:05:32 -0700 Message-Id: <1540033534-11211-5-git-send-email-rmanohar@codeaurora.org> In-Reply-To: <1540033534-11211-1-git-send-email-rmanohar@codeaurora.org> References: <1540033534-11211-1-git-send-email-rmanohar@codeaurora.org> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: linux-wireless@vger.kernel.org, ath10k@lists.infradead.org Cc: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= RnJvbTogVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIDx0b2tlQHRva2UuZGs+CgpUaGlzIG1vdmVz IHRoZSBhdGg5ayBkcml2ZXIgdG8gdXNlIHRoZSBtYWM4MDIxMSBUWFEgc2NoZWR1bGluZyBhbmQK YWlydGltZSBhY2NvdW50aW5nIEFQSXMsIHJlbW92aW5nIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRl IHRyYWNraW5nCmluc2lkZSB0aGUgZHJpdmVyLgoKU2lnbmVkLW9mZi1ieTogVG9rZSBIw7hpbGFu ZC1Kw7hyZ2Vuc2VuIDx0b2tlQHRva2UuZGs+Ci0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2F0aDlrLmggICAgIHwgIDE0IC0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo OWsvZGVidWcuYyAgICAgfCAgIDMgLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rl YnVnLmggICAgIHwgICA4IC0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Z19z dGEuYyB8ICA3MCAtLS0tLS0tLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0 LmMgICAgICB8ICAgMyArLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYyAg ICAgIHwgICA5ICstCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jICAgICAg fCAyNDQgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgNzMg aW5zZXJ0aW9ucygrKSwgMjc4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2F0aDlrLmgKaW5kZXggMjFiYTIwOTgxYTgwLi45MGI1Njc2NmRhYjEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oCisrKyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oCkBAIC0xMTIsOCArMTEyLDYgQEAgaW50IGF0aF9k ZXNjZG1hX3NldHVwKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX2Rlc2NkbWEgKmRk LAogI2RlZmluZSBBVEhfVFhGSUZPX0RFUFRIICAgICAgICAgICA4CiAjZGVmaW5lIEFUSF9UWF9F UlJPUiAgICAgICAgICAgICAgIDB4MDEKIAotI2RlZmluZSBBVEhfQUlSVElNRV9RVUFOVFVNICAg ICAgICAzMDAgLyogdXNlYyAqLwotCiAvKiBTdG9wIHR4IHRyYWZmaWMgMW1zIGJlZm9yZSB0aGUg R08gZ29lcyBhd2F5ICovCiAjZGVmaW5lIEFUSF9QMlBfUFNfU1RPUF9USU1FICAgICAgIDEwMDAK IApAQCAtMjQ2LDEwICsyNDQsOCBAQCBzdHJ1Y3QgYXRoX2F0eF90aWQgewogCXM4IGJhcl9pbmRl eDsKIAlib29sIGFjdGl2ZTsKIAlib29sIGNsZWFyX3BzX2ZpbHRlcjsKLQlib29sIGhhc19xdWV1 ZWQ7CiB9OwogCi12b2lkIF9fYXRoX3R4X3F1ZXVlX3RpZChzdHJ1Y3QgYXRoX3NvZnRjICpzYywg c3RydWN0IGF0aF9hdHhfdGlkICp0aWQpOwogdm9pZCBhdGhfdHhfcXVldWVfdGlkKHN0cnVjdCBh dGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCk7CiAKIHN0cnVjdCBhdGhfbm9k ZSB7CkBAIC0yNjMsMTIgKzI1OSw5IEBAIHN0cnVjdCBhdGhfbm9kZSB7CiAKIAlib29sIHNsZWVw aW5nOwogCWJvb2wgbm9fcHNfZmlsdGVyOwotCXM2NCBhaXJ0aW1lX2RlZmljaXRbSUVFRTgwMjEx X05VTV9BQ1NdOwotCXUzMiBhaXJ0aW1lX3J4X3N0YXJ0OwogCiAjaWZkZWYgQ09ORklHX0FUSDlL X1NUQVRJT05fU1RBVElTVElDUwogCXN0cnVjdCBhdGhfcnhfcmF0ZV9zdGF0cyByeF9yYXRlX3N0 YXRzOwotCXN0cnVjdCBhdGhfYWlydGltZV9zdGF0cyBhaXJ0aW1lX3N0YXRzOwogI2VuZGlmCiAJ dTgga2V5X2lkeFs0XTsKIApAQCAtOTg2LDExICs5NzksNiBAQCBzdHJ1Y3QgYXRoX2FudF9jb21i IHsKIAogI2RlZmluZSBBVEg5S19OVU1fQ0hBTkNUWCAgMiAvKiBzdXBwb3J0cyAyIG9wZXJhdGlu ZyBjaGFubmVscyAqLwogCi0jZGVmaW5lIEFJUlRJTUVfVVNFX1RYCQlCSVQoMCkKLSNkZWZpbmUg QUlSVElNRV9VU0VfUlgJCUJJVCgxKQotI2RlZmluZSBBSVJUSU1FX1VTRV9ORVdfUVVFVUVTCUJJ VCgyKQotI2RlZmluZSBBSVJUSU1FX0FDVElWRShmbGFncykgKCEhKGZsYWdzICYgKEFJUlRJTUVf VVNFX1RYfEFJUlRJTUVfVVNFX1JYKSkpCi0KIHN0cnVjdCBhdGhfc29mdGMgewogCXN0cnVjdCBp ZWVlODAyMTFfaHcgKmh3OwogCXN0cnVjdCBkZXZpY2UgKmRldjsKQEAgLTEwMzQsOCArMTAyMiw2 IEBAIHN0cnVjdCBhdGhfc29mdGMgewogCXNob3J0IG5iY252aWZzOwogCXVuc2lnbmVkIGxvbmcg cHNfdXNlY291bnQ7CiAKLQl1MTYgYWlydGltZV9mbGFnczsgLyogQUlSVElNRV8qICovCi0KIAlz dHJ1Y3QgYXRoX3J4IHJ4OwogCXN0cnVjdCBhdGhfdHggdHg7CiAJc3RydWN0IGF0aF9iZWFjb24g YmVhY29uOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVn LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwppbmRleCA0Mzk5ZTlh ZDA1OGYuLjBkZmVhNWQ2ZTk0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2RlYnVnLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVn LmMKQEAgLTE0NDMsOSArMTQ0Myw2IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhf aHcgKmFoKQogI2VuZGlmCiAJZGVidWdmc19jcmVhdGVfZmlsZSgidHBjIiwgMDYwMCwgc2MtPmRl YnVnLmRlYnVnZnNfcGh5LCBzYywgJmZvcHNfdHBjKTsKIAotCWRlYnVnZnNfY3JlYXRlX3UxNigi YWlydGltZV9mbGFncyIsIDA2MDAsCi0JCQkgICBzYy0+ZGVidWcuZGVidWdmc19waHksICZzYy0+ YWlydGltZV9mbGFncyk7Ci0KIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJuZl9vdmVycmlkZSIsIDA2 MDAsCiAJCQkgICAgc2MtPmRlYnVnLmRlYnVnZnNfcGh5LCBzYywgJmZvcHNfbmZfb3ZlcnJpZGUp OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuaCBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5oCmluZGV4IDc5NjA3ZGIxNDM4 Ny4uMzM4MjZhYTEzNjg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo OWsvZGVidWcuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuaApA QCAtMzE5LDIwICszMTksMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2RlYnVnX3N0YXRf YW50KHN0cnVjdCBhdGhfc29mdGMgKnNjLAogdm9pZCBhdGhfZGVidWdfcmF0ZV9zdGF0cyhzdHJ1 Y3QgYXRoX3NvZnRjICpzYywKIAkJCSAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLAogCQkJICBz dHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKLXZvaWQgYXRoX2RlYnVnX2FpcnRpbWUoc3RydWN0IGF0aF9z b2Z0YyAqc2MsCi0JCSAgICAgICBzdHJ1Y3QgYXRoX25vZGUgKmFuLAotCQkgICAgICAgdTMyIHJ4 LCB1MzIgdHgpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGhfZGVidWdfcmF0ZV9zdGF0 cyhzdHJ1Y3QgYXRoX3NvZnRjICpzYywKIAkJCQkJc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLAog CQkJCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogfQotc3RhdGljIGlubGluZSB2b2lkIGF0aF9k ZWJ1Z19haXJ0aW1lKHN0cnVjdCBhdGhfc29mdGMgKnNjLAotCQkJICAgICAgc3RydWN0IGF0aF9u b2RlICphbiwKLQkJCSAgICAgIHUzMiByeCwgdTMyIHR4KQotewotfQogI2VuZGlmIC8qIENPTkZJ R19BVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1MgKi8KIAogI2VuZGlmIC8qIERFQlVHX0ggKi8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Z19zdGEuYyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Z19zdGEuYwppbmRleCBlOGZjZDNlMWM0 NzAuLmQ5NWNhYmRkY2UzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2RlYnVnX3N0YS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1 Z19zdGEuYwpAQCAtMjQyLDc1ICsyNDIsNiBAQCBzdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfbm9k ZV9yZWN2KHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsCiAJLmxsc2Vl ayA9IGRlZmF1bHRfbGxzZWVrLAogfTsKIAotdm9pZCBhdGhfZGVidWdfYWlydGltZShzdHJ1Y3Qg YXRoX3NvZnRjICpzYywKLQkJc3RydWN0IGF0aF9ub2RlICphbiwKLQkJdTMyIHJ4LAotCQl1MzIg dHgpCi17Ci0Jc3RydWN0IGF0aF9haXJ0aW1lX3N0YXRzICphc3RhdHMgPSAmYW4tPmFpcnRpbWVf c3RhdHM7Ci0KLQlhc3RhdHMtPnJ4X2FpcnRpbWUgKz0gcng7Ci0JYXN0YXRzLT50eF9haXJ0aW1l ICs9IHR4OwotfQotCi1zdGF0aWMgc3NpemVfdCByZWFkX2FpcnRpbWUoc3RydWN0IGZpbGUgKmZp bGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZiwKLQkJCXNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9z KQotewotCXN0cnVjdCBhdGhfbm9kZSAqYW4gPSBmaWxlLT5wcml2YXRlX2RhdGE7Ci0Jc3RydWN0 IGF0aF9haXJ0aW1lX3N0YXRzICphc3RhdHM7Ci0Jc3RhdGljIGNvbnN0IGNoYXIgKnFuYW1lWzRd ID0gewotCQkiVk8iLCAiVkkiLCAiQkUiLCAiQksiCi0JfTsKLQl1MzIgbGVuID0gMCwgc2l6ZSA9 IDI1NjsKLQljaGFyICpidWY7Ci0Jc2l6ZV90IHJldHZhbDsKLQlpbnQgaTsKLQotCWJ1ZiA9IGt6 YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKGJ1ZiA9PSBOVUxMKQotCQlyZXR1cm4gLUVO T01FTTsKLQotCWFzdGF0cyA9ICZhbi0+YWlydGltZV9zdGF0czsKLQotCWxlbiArPSBzY25wcmlu dGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCAiUlg6ICV1IHVzXG4iLCBhc3RhdHMtPnJ4X2FpcnRp bWUpOwotCWxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCAiVFg6ICV1IHVz XG4iLCBhc3RhdHMtPnR4X2FpcnRpbWUpOwotCWxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBz aXplIC0gbGVuLCAiRGVmaWNpdDogIik7Ci0JZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKLQkJbGVu ICs9IHNjbnByaW50ZihidWYrbGVuLCBzaXplIC0gbGVuLCAiJXM6ICVsbGQgdXMgIiwgcW5hbWVb aV0sIGFuLT5haXJ0aW1lX2RlZmljaXRbaV0pOwotCWlmIChsZW4gPCBzaXplKQotCQlidWZbbGVu KytdID0gJ1xuJzsKLQotCXJldHZhbCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVm LCBjb3VudCwgcHBvcywgYnVmLCBsZW4pOwotCWtmcmVlKGJ1Zik7Ci0KLQlyZXR1cm4gcmV0dmFs OwotfQotCi1zdGF0aWMgc3NpemVfdAotd3JpdGVfYWlydGltZV9yZXNldF9zdHViKHN0cnVjdCBm aWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKLQkJICAgc2l6ZV90IGNvdW50LCBs b2ZmX3QgKnBwb3MpCi17Ci0Jc3RydWN0IGF0aF9ub2RlICphbiA9IGZpbGUtPnByaXZhdGVfZGF0 YTsKLQlzdHJ1Y3QgYXRoX2FpcnRpbWVfc3RhdHMgKmFzdGF0czsKLQlpbnQgaTsKLQotCWFzdGF0 cyA9ICZhbi0+YWlydGltZV9zdGF0czsKLQlhc3RhdHMtPnJ4X2FpcnRpbWUgPSAwOwotCWFzdGF0 cy0+dHhfYWlydGltZSA9IDA7Ci0JZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKLQkJYW4tPmFpcnRp bWVfZGVmaWNpdFtpXSA9IEFUSF9BSVJUSU1FX1FVQU5UVU07Ci0JcmV0dXJuIGNvdW50OwotfQot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2FpcnRpbWUgPSB7Ci0J LnJlYWQgPSByZWFkX2FpcnRpbWUsCi0JLndyaXRlID0gd3JpdGVfYWlydGltZV9yZXNldF9zdHVi LAotCS5vcGVuID0gc2ltcGxlX29wZW4sCi0JLm93bmVyID0gVEhJU19NT0RVTEUsCi0JLmxsc2Vl ayA9IGRlZmF1bHRfbGxzZWVrLAotfTsKLQotCiB2b2lkIGF0aDlrX3N0YV9hZGRfZGVidWdmcyhz dHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJCSAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYs CiAJCQkgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLApAQCAtMzIwLDUgKzI1MSw0IEBAIHZv aWQgYXRoOWtfc3RhX2FkZF9kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCiAJZGVi dWdmc19jcmVhdGVfZmlsZSgibm9kZV9hZ2dyIiwgMDQ0NCwgZGlyLCBhbiwgJmZvcHNfbm9kZV9h Z2dyKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJub2RlX3JlY3YiLCAwNDQ0LCBkaXIsIGFuLCAm Zm9wc19ub2RlX3JlY3YpOwotCWRlYnVnZnNfY3JlYXRlX2ZpbGUoImFpcnRpbWUiLCAwNjQ0LCBk aXIsIGFuLCAmZm9wc19haXJ0aW1lKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5p dC5jCmluZGV4IGMwNzBhOWU1MWViZi4uNDVhMzFmOGExNTE0IDEwMDY0NAotLS0gYS9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGg5ay9pbml0LmMKQEAgLTY3Niw4ICs2NzYsNiBAQCBzdGF0aWMgaW50IGF0aDlrX2lu aXRfc29mdGModTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYywKIAogCS8qIFdpbGwgYmUg Y2xlYXJlZCBpbiBhdGg5a19zdGFydCgpICovCiAJc2V0X2JpdChBVEhfT1BfSU5WQUxJRCwgJmNv bW1vbi0+b3BfZmxhZ3MpOwotCXNjLT5haXJ0aW1lX2ZsYWdzID0gKEFJUlRJTUVfVVNFX1RYIHwg QUlSVElNRV9VU0VfUlggfAotCQkJICAgICBBSVJUSU1FX1VTRV9ORVdfUVVFVUVTKTsKIAogCXNj LT5zY19haCA9IGFoOwogCXNjLT5kZnNfZGV0ZWN0b3IgPSBkZnNfcGF0dGVybl9kZXRlY3Rvcl9p bml0KGNvbW1vbiwgTkw4MDIxMV9ERlNfVU5TRVQpOwpAQCAtMTAxMyw2ICsxMDExLDcgQEAgc3Rh dGljIHZvaWQgYXRoOWtfc2V0X2h3X2NhcGFiKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3Qg aWVlZTgwMjExX2h3ICpodykKIAlTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgY29tbW9uLT5t YWNhZGRyKTsKIAogCXdpcGh5X2V4dF9mZWF0dXJlX3NldChody0+d2lwaHksIE5MODAyMTFfRVhU X0ZFQVRVUkVfQ1FNX1JTU0lfTElTVCk7CisJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGh3LT53aXBo eSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9BSVJUSU1FX0ZBSVJORVNTKTsKIH0KIAogaW50IGF0aDlr X2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jIGIvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDlrL3JlY3YuYwppbmRleCAzMGQxYmQ4MzJkOTAuLjI4NWE2MmQzMDE5ZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYworKysgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jCkBAIC0xMDU0LDE0ICsxMDU0LDcg QEAgc3RhdGljIHZvaWQgYXRoX3J4X2NvdW50X2FpcnRpbWUoc3RydWN0IGF0aF9zb2Z0YyAqc2Ms CiAJCQkJCQlsZW4sIHJ4cy0+cmF0ZV9pZHgsIGlzX3NwKTsKIAl9CiAKLSAJaWYgKCEhKHNjLT5h aXJ0aW1lX2ZsYWdzICYgQUlSVElNRV9VU0VfUlgpKSB7Ci0JCXNwaW5fbG9ja19iaCgmYWNxLT5s b2NrKTsKLQkJYW4tPmFpcnRpbWVfZGVmaWNpdFthY25vXSAtPSBhaXJ0aW1lOwotCQlpZiAoYW4t PmFpcnRpbWVfZGVmaWNpdFthY25vXSA8PSAwKQotCQkJX19hdGhfdHhfcXVldWVfdGlkKHNjLCBB VEhfQU5fMl9USUQoYW4sIHRpZG5vKSk7Ci0JCXNwaW5fdW5sb2NrX2JoKCZhY3EtPmxvY2spOwot CX0KLQlhdGhfZGVidWdfYWlydGltZShzYywgYW4sIGFpcnRpbWUsIDApOworCWllZWU4MDIxMV9z dGFfcmVnaXN0ZXJfYWlydGltZShzdGEsIHRpZG5vLCAwLCBhaXJ0aW1lKTsKIGV4aXQ6CiAJcmN1 X3JlYWRfdW5sb2NrKCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsveG1pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYwppbmRl eCAyNWIzZmM4MmQ0YWMuLmNkNDlhOTcwZGQzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDlrL3htaXQuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo OWsveG1pdC5jCkBAIC0xMTMsNDQgKzExMywxNCBAQCB2b2lkIGF0aF90eHFfdW5sb2NrX2NvbXBs ZXRlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxKQogCQlhdGhfdHhf c3RhdHVzKGh3LCBza2IpOwogfQogCi12b2lkIF9fYXRoX3R4X3F1ZXVlX3RpZChzdHJ1Y3QgYXRo X3NvZnRjICpzYywgc3RydWN0IGF0aF9hdHhfdGlkICp0aWQpCi17Ci0Jc3RydWN0IGF0aF92aWYg KmF2cCA9IChzdHJ1Y3QgYXRoX3ZpZiAqKSB0aWQtPmFuLT52aWYtPmRydl9wcml2OwotCXN0cnVj dCBhdGhfY2hhbmN0eCAqY3R4ID0gYXZwLT5jaGFuY3R4OwotCXN0cnVjdCBhdGhfYWNxICphY3E7 Ci0Jc3RydWN0IGxpc3RfaGVhZCAqdGlkX2xpc3Q7Ci0JdTggYWNubyA9IFRJRF9UT19XTUVfQUMo dGlkLT50aWRubyk7Ci0KLQlpZiAoIWN0eCB8fCAhbGlzdF9lbXB0eSgmdGlkLT5saXN0KSkKLQkJ cmV0dXJuOwotCi0KLQlhY3EgPSAmY3R4LT5hY3FbYWNub107Ci0JaWYgKChzYy0+YWlydGltZV9m bGFncyAmIEFJUlRJTUVfVVNFX05FV19RVUVVRVMpICYmCi0JICAgIHRpZC0+YW4tPmFpcnRpbWVf ZGVmaWNpdFthY25vXSA+IDApCi0JCXRpZF9saXN0ID0gJmFjcS0+YWNxX25ldzsKLQllbHNlCi0J CXRpZF9saXN0ID0gJmFjcS0+YWNxX29sZDsKLQotCWxpc3RfYWRkX3RhaWwoJnRpZC0+bGlzdCwg dGlkX2xpc3QpOwotfQotCiB2b2lkIGF0aF90eF9xdWV1ZV90aWQoc3RydWN0IGF0aF9zb2Z0YyAq c2MsIHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkKQogewotCXN0cnVjdCBhdGhfdmlmICphdnAgPSAo c3RydWN0IGF0aF92aWYgKikgdGlkLT5hbi0+dmlmLT5kcnZfcHJpdjsKLQlzdHJ1Y3QgYXRoX2No YW5jdHggKmN0eCA9IGF2cC0+Y2hhbmN0eDsKLQlzdHJ1Y3QgYXRoX2FjcSAqYWNxOworCXN0cnVj dCBpZWVlODAyMTFfdHhxICpxdWV1ZSA9IGNvbnRhaW5lcl9vZigKKwkJKHZvaWQgKil0aWQsIHN0 cnVjdCBpZWVlODAyMTFfdHhxLCBkcnZfcHJpdik7CiAKLQlpZiAoIWN0eCB8fCAhbGlzdF9lbXB0 eSgmdGlkLT5saXN0KSkKLQkJcmV0dXJuOwotCi0JYWNxID0gJmN0eC0+YWNxW1RJRF9UT19XTUVf QUModGlkLT50aWRubyldOwotCXNwaW5fbG9ja19iaCgmYWNxLT5sb2NrKTsKLQlfX2F0aF90eF9x dWV1ZV90aWQoc2MsIHRpZCk7Ci0Jc3Bpbl91bmxvY2tfYmgoJmFjcS0+bG9jayk7CisJaWVlZTgw MjExX3JldHVybl90eHEoc2MtPmh3LCBxdWV1ZSk7CiB9CiAKLQogdm9pZCBhdGg5a193YWtlX3R4 X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqcXVl dWUpCiB7CiAJc3RydWN0IGF0aF9zb2Z0YyAqc2MgPSBody0+cHJpdjsKQEAgLTE2MywxMSArMTMz LDcgQEAgdm9pZCBhdGg5a193YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBz dHJ1Y3QgaWVlZTgwMjExX3R4cSAqcXVldWUpCiAJCXRpZC0+dGlkbm8pOwogCiAJYXRoX3R4cV9s b2NrKHNjLCB0eHEpOwotCi0JdGlkLT5oYXNfcXVldWVkID0gdHJ1ZTsKLQlhdGhfdHhfcXVldWVf dGlkKHNjLCB0aWQpOwogCWF0aF90eHFfc2NoZWR1bGUoc2MsIHR4cSk7Ci0KIAlhdGhfdHhxX3Vu bG9jayhzYywgdHhxKTsKIH0KIApAQCAtMjE3LDggKzE4Myw4IEBAIHN0YXRpYyB2b2lkIGF0aF90 eHFfc2tiX2RvbmUoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfdHhxICp0eHEsCiAJ cmV0dXJuIEFUSF9BTl8yX1RJRChhbiwgdGlkbm8pOwogfQogCi1zdGF0aWMgc3RydWN0IHNrX2J1 ZmYgKgotYXRoX3RpZF9wdWxsKHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkKQorc3RhdGljIGludAor YXRoX3RpZF9wdWxsKHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3Qgc2tfYnVmZiAqKnNr YnVmKQogewogCXN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEgPSBjb250YWluZXJfb2YoKHZvaWQq KXRpZCwgc3RydWN0IGllZWU4MDIxMV90eHEsIGRydl9wcml2KTsKIAlzdHJ1Y3QgYXRoX3NvZnRj ICpzYyA9IHRpZC0+YW4tPnNjOwpAQCAtMjI5LDIwICsxOTUsMTUgQEAgc3RhdGljIHZvaWQgYXRo X3R4cV9za2JfZG9uZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90eHEgKnR4cSwK IAl9OwogCXN0cnVjdCBza19idWZmICpza2I7CiAJc3RydWN0IGF0aF9mcmFtZV9pbmZvICpmaTsK LQlpbnQgcTsKLQotCWlmICghdGlkLT5oYXNfcXVldWVkKQotCQlyZXR1cm4gTlVMTDsKKwlpbnQg cSwgcmV0OwogCiAJc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7Ci0JaWYgKCFz a2IpIHsKLQkJdGlkLT5oYXNfcXVldWVkID0gZmFsc2U7Ci0JCXJldHVybiBOVUxMOwotCX0KKwlp ZiAoIXNrYikKKwkJcmV0dXJuIC1FTk9FTlQ7CiAKLQlpZiAoYXRoX3R4X3ByZXBhcmUoaHcsIHNr YiwgJnR4Y3RsKSkgeworCWlmICgocmV0ID0gYXRoX3R4X3ByZXBhcmUoaHcsIHNrYiwgJnR4Y3Rs KSkpIHsKIAkJaWVlZTgwMjExX2ZyZWVfdHhza2IoaHcsIHNrYik7Ci0JCXJldHVybiBOVUxMOwor CQlyZXR1cm4gcmV0OwogCX0KIAogCXEgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTsKQEAg LTI1MiwyNCArMjEzLDE5IEBAIHN0YXRpYyB2b2lkIGF0aF90eHFfc2tiX2RvbmUoc3RydWN0IGF0 aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfdHhxICp0eHEsCiAJCSsrdGlkLT50eHEtPnBlbmRpbmdf ZnJhbWVzOwogCX0KIAotCXJldHVybiBza2I7Ci19Ci0KLQotc3RhdGljIGJvb2wgYXRoX3RpZF9o YXNfYnVmZmVyZWQoc3RydWN0IGF0aF9hdHhfdGlkICp0aWQpCi17Ci0JcmV0dXJuICFza2JfcXVl dWVfZW1wdHkoJnRpZC0+cmV0cnlfcSkgfHwgdGlkLT5oYXNfcXVldWVkOwotfQorCSpza2J1ZiA9 IHNrYjsKKwlyZXR1cm4gMDsKKyB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYXRoX3RpZF9k ZXF1ZXVlKHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkKQorc3RhdGljIGludCBhdGhfdGlkX2RlcXVl dWUoc3RydWN0IGF0aF9hdHhfdGlkICp0aWQsCisJCQkgICBzdHJ1Y3Qgc2tfYnVmZiAqKnNrYikK IHsKLQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCWludCByZXQgPSAwOworCSpza2IgPSBfX3NrYl9k ZXF1ZXVlKCZ0aWQtPnJldHJ5X3EpOworCWlmICghKnNrYikKKwkJcmV0ID0gYXRoX3RpZF9wdWxs KHRpZCwgc2tiKTsKIAotCXNrYiA9IF9fc2tiX2RlcXVldWUoJnRpZC0+cmV0cnlfcSk7Ci0JaWYg KCFza2IpCi0JCXNrYiA9IGF0aF90aWRfcHVsbCh0aWQpOwotCi0JcmV0dXJuIHNrYjsKKwlyZXR1 cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBhdGhfdHhfZmx1c2hfdGlkKHN0cnVjdCBhdGhfc29m dGMgKnNjLCBzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCkKQEAgLTM2NSwxMSArMzIxLDEyIEBAIHN0 YXRpYyB2b2lkIGF0aF90aWRfZHJhaW4oc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhf dHhxICp0eHEsCiAJc3RydWN0IGxpc3RfaGVhZCBiZl9oZWFkOwogCXN0cnVjdCBhdGhfdHhfc3Rh dHVzIHRzOwogCXN0cnVjdCBhdGhfZnJhbWVfaW5mbyAqZmk7CisJaW50IHJldDsKIAogCW1lbXNl dCgmdHMsIDAsIHNpemVvZih0cykpOwogCUlOSVRfTElTVF9IRUFEKCZiZl9oZWFkKTsKIAotCXdo aWxlICgoc2tiID0gYXRoX3RpZF9kZXF1ZXVlKHRpZCkpKSB7CisJd2hpbGUgKChyZXQgPSBhdGhf dGlkX2RlcXVldWUodGlkLCAmc2tiKSkgPT0gMCkgewogCQlmaSA9IGdldF9mcmFtZV9pbmZvKHNr Yik7CiAJCWJmID0gZmktPmJmOwogCkBAIC02ODEsNyArNjM4LDYgQEAgc3RhdGljIHZvaWQgYXRo X3R4X2NvbXBsZXRlX2FnZ3Ioc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfdHhxICp0 eHEsCiAJCXNrYl9xdWV1ZV9zcGxpY2VfdGFpbCgmYmZfcGVuZGluZywgJnRpZC0+cmV0cnlfcSk7 CiAJCWlmICghYW4tPnNsZWVwaW5nKSB7CiAJCQlhdGhfdHhfcXVldWVfdGlkKHNjLCB0aWQpOwot CiAJCQlpZiAodHMtPnRzX3N0YXR1cyAmIChBVEg5S19UWEVSUl9GSUxUIHwgQVRIOUtfVFhFUlJf WFJFVFJZKSkKIAkJCQl0aWQtPmNsZWFyX3BzX2ZpbHRlciA9IHRydWU7CiAJCX0KQEAgLTcwOCwx MSArNjY0LDkgQEAgc3RhdGljIGJvb2wgYmZfaXNfYW1wZHVfbm90X3Byb2Jpbmcoc3RydWN0IGF0 aF9idWYgKmJmKQogICAgIHJldHVybiBiZl9pc2FtcGR1KGJmKSAmJiAhKGluZm8tPmZsYWdzICYg SUVFRTgwMjExX1RYX0NUTF9SQVRFX0NUUkxfUFJPQkUpOwogfQogCi1zdGF0aWMgdm9pZCBhdGhf dHhfY291bnRfYWlydGltZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF9ub2RlICph biwKLQkJCQkgc3RydWN0IGF0aF9hdHhfdGlkICp0aWQsIHN0cnVjdCBhdGhfYnVmICpiZiwKLQkJ CQkgc3RydWN0IGF0aF90eF9zdGF0dXMgKnRzKQorc3RhdGljIHZvaWQgYXRoX3R4X2NvdW50X2Fp cnRpbWUoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsCisJ CQkJIHN0cnVjdCBhdGhfYnVmICpiZiwgc3RydWN0IGF0aF90eF9zdGF0dXMgKnRzKQogewotCXN0 cnVjdCBhdGhfdHhxICp0eHEgPSB0aWQtPnR4cTsKIAl1MzIgYWlydGltZSA9IDA7CiAJaW50IGk7 CiAKQEAgLTcyMiwxNyArNjc2LDcgQEAgc3RhdGljIHZvaWQgYXRoX3R4X2NvdW50X2FpcnRpbWUo c3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfbm9kZSAqYW4sCiAJCWFpcnRpbWUgKz0g cmF0ZV9kdXIgKiBiZi0+cmF0ZXNbaV0uY291bnQ7CiAJfQogCi0JaWYgKHNjLT5haXJ0aW1lX2Zs YWdzICYgQUlSVElNRV9VU0VfVFgpIHsKLQkJaW50IHEgPSB0eHEtPm1hYzgwMjExX3FudW07Ci0J CXN0cnVjdCBhdGhfYWNxICphY3EgPSAmc2MtPmN1cl9jaGFuLT5hY3FbcV07Ci0KLQkJc3Bpbl9s b2NrX2JoKCZhY3EtPmxvY2spOwotCQlhbi0+YWlydGltZV9kZWZpY2l0W3FdIC09IGFpcnRpbWU7 Ci0JCWlmIChhbi0+YWlydGltZV9kZWZpY2l0W3FdIDw9IDApCi0JCQlfX2F0aF90eF9xdWV1ZV90 aWQoc2MsIHRpZCk7Ci0JCXNwaW5fdW5sb2NrX2JoKCZhY3EtPmxvY2spOwotCX0KLQlhdGhfZGVi dWdfYWlydGltZShzYywgYW4sIDAsIGFpcnRpbWUpOworCWllZWU4MDIxMV9zdGFfcmVnaXN0ZXJf YWlydGltZShzdGEsIHRzLT50aWQsIGFpcnRpbWUsIDApOwogfQogCiBzdGF0aWMgdm9pZCBhdGhf dHhfcHJvY2Vzc19idWZmZXIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfdHhxICp0 eHEsCkBAIC03NjIsNyArNzA2LDcgQEAgc3RhdGljIHZvaWQgYXRoX3R4X3Byb2Nlc3NfYnVmZmVy KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLAogCWlmIChzdGEpIHsK IAkJc3RydWN0IGF0aF9ub2RlICphbiA9IChzdHJ1Y3QgYXRoX25vZGUgKilzdGEtPmRydl9wcml2 OwogCQl0aWQgPSBhdGhfZ2V0X3NrYl90aWQoc2MsIGFuLCBiZi0+YmZfbXBkdSk7Ci0JCWF0aF90 eF9jb3VudF9haXJ0aW1lKHNjLCBhbiwgdGlkLCBiZiwgdHMpOworCQlhdGhfdHhfY291bnRfYWly dGltZShzYywgc3RhLCBiZiwgdHMpOwogCQlpZiAodHMtPnRzX3N0YXR1cyAmIChBVEg5S19UWEVS Ul9GSUxUIHwgQVRIOUtfVFhFUlJfWFJFVFJZKSkKIAkJCXRpZC0+Y2xlYXJfcHNfZmlsdGVyID0g dHJ1ZTsKIAl9CkBAIC05NDYsMjAgKzg5MCwyMSBAQCBzdGF0aWMgaW50IGF0aF9jb21wdXRlX251 bV9kZWxpbXMoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLAog CXJldHVybiBuZGVsaW07CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgYXRoX2J1ZiAqCitzdGF0aWMgaW50 CiBhdGhfdHhfZ2V0X3RpZF9zdWJmcmFtZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0 aF90eHEgKnR4cSwKLQkJCXN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkKQorCQkJc3RydWN0IGF0aF9h dHhfdGlkICp0aWQsIHN0cnVjdCBhdGhfYnVmICoqYnVmKQogewogCXN0cnVjdCBpZWVlODAyMTFf dHhfaW5mbyAqdHhfaW5mbzsKIAlzdHJ1Y3QgYXRoX2ZyYW1lX2luZm8gKmZpOwotCXN0cnVjdCBz a19idWZmICpza2IsICpmaXJzdF9za2IgPSBOVUxMOwogCXN0cnVjdCBhdGhfYnVmICpiZjsKKwlz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqZmlyc3Rfc2tiID0gTlVMTDsKIAl1MTYgc2Vxbm87CisJaW50 IHJldDsKIAogCXdoaWxlICgxKSB7Ci0JCXNrYiA9IGF0aF90aWRfZGVxdWV1ZSh0aWQpOwotCQlp ZiAoIXNrYikKLQkJCWJyZWFrOworCQlyZXQgPSBhdGhfdGlkX2RlcXVldWUodGlkLCAmc2tiKTsK KwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OwogCiAJCWZpID0gZ2V0X2ZyYW1lX2luZm8o c2tiKTsKIAkJYmYgPSBmaS0+YmY7CkBAIC05OTEsNyArOTM2LDcgQEAgc3RhdGljIGludCBhdGhf Y29tcHV0ZV9udW1fZGVsaW1zKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX2F0eF90 aWQgKnRpZCwKIAogCQlpZiAoISh0eF9pbmZvLT5mbGFncyAmIElFRUU4MDIxMV9UWF9DVExfQU1Q RFUpKSB7CiAJCQliZi0+YmZfc3RhdGUuYmZfdHlwZSA9IDA7Ci0JCQlyZXR1cm4gYmY7CisJCQli cmVhazsKIAkJfQogCiAJCWJmLT5iZl9zdGF0ZS5iZl90eXBlID0gQlVGX0FNUERVIHwgQlVGX0FH R1I7CkBAIC0xMDEwLDcgKzk1NSw3IEBAIHN0YXRpYyBpbnQgYXRoX2NvbXB1dGVfbnVtX2RlbGlt cyhzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF9hdHhfdGlkICp0aWQsCiAJCQkJCWZp cnN0X3NrYiA9IHNrYjsKIAkJCQljb250aW51ZTsKIAkJCX0KLQkJCWJyZWFrOworCQkJcmV0dXJu IC1FSU5QUk9HUkVTUzsKIAkJfQogCiAJCWlmICh0aWQtPmJhcl9pbmRleCA+IEFUSF9CQV9JTkRF WCh0aWQtPnNlcV9zdGFydCwgc2Vxbm8pKSB7CkBAIC0xMDI3LDEwICs5NzIsMTEgQEAgc3RhdGlj IGludCBhdGhfY29tcHV0ZV9udW1fZGVsaW1zKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3Qg YXRoX2F0eF90aWQgKnRpZCwKIAkJaWYgKGJmX2lzYW1wZHUoYmYpKQogCQkJYXRoX3R4X2FkZHRv X2JhdyhzYywgdGlkLCBiZik7CiAKLQkJcmV0dXJuIGJmOworCQlicmVhazsKIAl9CiAKLQlyZXR1 cm4gTlVMTDsKKwkqYnVmID0gYmY7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTEw NDAsNyArOTg2LDcgQEAgc3RhdGljIGludCBhdGhfY29tcHV0ZV9udW1fZGVsaW1zKHN0cnVjdCBh dGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCwKIHsKICNkZWZpbmUgUEFEQllU RVMoX2xlbikgKCg0IC0gKChfbGVuKSAlIDQpKSAlIDQpCiAJc3RydWN0IGF0aF9idWYgKmJmID0g YmZfZmlyc3QsICpiZl9wcmV2ID0gTlVMTDsKLQlpbnQgbmZyYW1lcyA9IDAsIG5kZWxpbTsKKwlp bnQgbmZyYW1lcyA9IDAsIG5kZWxpbSwgcmV0OwogCXUxNiBhZ2dyX2xpbWl0ID0gMCwgYWwgPSAw LCBicGFkID0gMCwKIAkgICAgYWxfZGVsdGEsIGhfYmF3ID0gdGlkLT5iYXdfc2l6ZSAvIDI7CiAJ c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICp0eF9pbmZvOwpAQCAtMTA5Miw3ICsxMDM4LDkgQEAg c3RhdGljIGludCBhdGhfY29tcHV0ZV9udW1fZGVsaW1zKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBz dHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCwKIAogCQliZl9wcmV2ID0gYmY7CiAKLQkJYmYgPSBhdGhf dHhfZ2V0X3RpZF9zdWJmcmFtZShzYywgdHhxLCB0aWQpOworCQlyZXQgPSBhdGhfdHhfZ2V0X3Rp ZF9zdWJmcmFtZShzYywgdHhxLCB0aWQsICZiZik7CisJCWlmIChyZXQgPCAwKQorCQkJYnJlYWs7 CiAJfQogCWdvdG8gZmluaXNoOwogc3RvcDoKQEAgLTE0ODksNyArMTQzNyw3IEBAIHN0YXRpYyB2 b2lkIGF0aF90eF9maWxsX2Rlc2Moc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfYnVm ICpiZiwKIAkJICBzdHJ1Y3QgYXRoX2J1ZiAqYmZfZmlyc3QpCiB7CiAJc3RydWN0IGF0aF9idWYg KmJmID0gYmZfZmlyc3QsICpiZl9wcmV2ID0gTlVMTDsKLQlpbnQgbmZyYW1lcyA9IDA7CisJaW50 IG5mcmFtZXMgPSAwLCByZXQ7CiAKIAlkbyB7CiAJCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAq dHhfaW5mbzsKQEAgLTE1MDMsOCArMTQ1MSw4IEBAIHN0YXRpYyB2b2lkIGF0aF90eF9maWxsX2Rl c2Moc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfYnVmICpiZiwKIAkJaWYgKG5mcmFt ZXMgPj0gMikKIAkJCWJyZWFrOwogCi0JCWJmID0gYXRoX3R4X2dldF90aWRfc3ViZnJhbWUoc2Ms IHR4cSwgdGlkKTsKLQkJaWYgKCFiZikKKwkJcmV0ID0gYXRoX3R4X2dldF90aWRfc3ViZnJhbWUo c2MsIHR4cSwgdGlkLCAmYmYpOworCQlpZiAocmV0IDwgMCkKIAkJCWJyZWFrOwogCiAJCXR4X2lu Zm8gPSBJRUVFODAyMTFfU0tCX0NCKGJmLT5iZl9tcGR1KTsKQEAgLTE1MTcsMzAgKzE0NjUsMjcg QEAgc3RhdGljIHZvaWQgYXRoX3R4X2ZpbGxfZGVzYyhzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3Ry dWN0IGF0aF9idWYgKmJmLAogCX0gd2hpbGUgKDEpOwogfQogCi1zdGF0aWMgYm9vbCBhdGhfdHhf c2NoZWRfYWdncihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90eHEgKnR4cSwKLQkJ CSAgICAgIHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkKQorc3RhdGljIGludCBhdGhfdHhfc2NoZWRf YWdncihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90eHEgKnR4cSwKKwkJCSAgICAg c3RydWN0IGF0aF9hdHhfdGlkICp0aWQpCiB7Ci0Jc3RydWN0IGF0aF9idWYgKmJmOworCXN0cnVj dCBhdGhfYnVmICpiZiA9IE5VTEw7CiAJc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICp0eF9pbmZv OwogCXN0cnVjdCBsaXN0X2hlYWQgYmZfcTsKLQlpbnQgYWdncl9sZW4gPSAwOworCWludCBhZ2dy X2xlbiA9IDAsIHJldDsKIAlib29sIGFnZ3I7CiAKLQlpZiAoIWF0aF90aWRfaGFzX2J1ZmZlcmVk KHRpZCkpCi0JCXJldHVybiBmYWxzZTsKLQogCUlOSVRfTElTVF9IRUFEKCZiZl9xKTsKIAotCWJm ID0gYXRoX3R4X2dldF90aWRfc3ViZnJhbWUoc2MsIHR4cSwgdGlkKTsKLQlpZiAoIWJmKQotCQly ZXR1cm4gZmFsc2U7CisJcmV0ID0gYXRoX3R4X2dldF90aWRfc3ViZnJhbWUoc2MsIHR4cSwgdGlk LCAmYmYpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OwogCiAJdHhfaW5mbyA9IElFRUU4 MDIxMV9TS0JfQ0IoYmYtPmJmX21wZHUpOwogCWFnZ3IgPSAhISh0eF9pbmZvLT5mbGFncyAmIElF RUU4MDIxMV9UWF9DVExfQU1QRFUpOwogCWlmICgoYWdnciAmJiB0eHEtPmF4cV9hbXBkdV9kZXB0 aCA+PSBBVEhfQUdHUl9NSU5fUURFUFRIKSB8fAogCSAgICAoIWFnZ3IgJiYgdHhxLT5heHFfZGVw dGggPj0gQVRIX05PTl9BR0dSX01JTl9RREVQVEgpKSB7CiAJCV9fc2tiX3F1ZXVlX3RhaWwoJnRp ZC0+cmV0cnlfcSwgYmYtPmJmX21wZHUpOwotCQlyZXR1cm4gZmFsc2U7CisJCXJldHVybiAtRUJV U1k7CiAJfQogCiAJYXRoX3NldF9yYXRlcyh0aWQtPmFuLT52aWYsIHRpZC0+YW4tPnN0YSwgYmYp OwpAQCAtMTU1MCw3ICsxNDk1LDcgQEAgc3RhdGljIGJvb2wgYXRoX3R4X3NjaGVkX2FnZ3Ioc3Ry dWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfdHhxICp0eHEsCiAJCWF0aF90eF9mb3JtX2J1 cnN0KHNjLCB0eHEsIHRpZCwgJmJmX3EsIGJmKTsKIAogCWlmIChsaXN0X2VtcHR5KCZiZl9xKSkK LQkJcmV0dXJuIGZhbHNlOworCQlyZXR1cm4gLUVBR0FJTjsKIAogCWlmICh0aWQtPmNsZWFyX3Bz X2ZpbHRlciB8fCB0aWQtPmFuLT5ub19wc19maWx0ZXIpIHsKIAkJdGlkLT5jbGVhcl9wc19maWx0 ZXIgPSBmYWxzZTsKQEAgLTE1NTksNyArMTUwNCw3IEBAIHN0YXRpYyBib29sIGF0aF90eF9zY2hl ZF9hZ2dyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLAogCiAJYXRo X3R4X2ZpbGxfZGVzYyhzYywgYmYsIHR4cSwgYWdncl9sZW4pOwogCWF0aF90eF90eHFhZGRidWYo c2MsIHR4cSwgJmJmX3EsIGZhbHNlKTsKLQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gMDsKIH0KIAog aW50IGF0aF90eF9hZ2dyX3N0YXJ0KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgw MjExX3N0YSAqc3RhLApAQCAtMTYyMiwyOCArMTU2NywxNiBAQCB2b2lkIGF0aF90eF9hZ2dyX3Ns ZWVwKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBhdGhfc29mdGMgKnNjLAogewog CXN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc2MtPnNjX2FoKTsK IAlzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZDsKLQlzdHJ1Y3QgYXRoX3R4cSAqdHhxOwogCWludCB0 aWRubzsKIAogCWF0aF9kYmcoY29tbW9uLCBYTUlULCAiJXMgY2FsbGVkXG4iLCBfX2Z1bmNfXyk7 CiAKIAlmb3IgKHRpZG5vID0gMDsgdGlkbm8gPCBJRUVFODAyMTFfTlVNX1RJRFM7IHRpZG5vKysp IHsKIAkJdGlkID0gYXRoX25vZGVfdG9fdGlkKGFuLCB0aWRubyk7Ci0JCXR4cSA9IHRpZC0+dHhx OwotCi0JCWF0aF90eHFfbG9jayhzYywgdHhxKTsKLQotCQlpZiAobGlzdF9lbXB0eSgmdGlkLT5s aXN0KSkgewotCQkJYXRoX3R4cV91bmxvY2soc2MsIHR4cSk7Ci0JCQljb250aW51ZTsKLQkJfQog CiAJCWlmICghc2tiX3F1ZXVlX2VtcHR5KCZ0aWQtPnJldHJ5X3EpKQogCQkJaWVlZTgwMjExX3N0 YV9zZXRfYnVmZmVyZWQoc3RhLCB0aWQtPnRpZG5vLCB0cnVlKTsKIAotCQlsaXN0X2RlbF9pbml0 KCZ0aWQtPmxpc3QpOwotCi0JCWF0aF90eHFfdW5sb2NrKHNjLCB0eHEpOwogCX0KIH0KIApAQCAt MTY2MiwxMSArMTU5NSwxMiBAQCB2b2lkIGF0aF90eF9hZ2dyX3dha2V1cChzdHJ1Y3QgYXRoX3Nv ZnRjICpzYywgc3RydWN0IGF0aF9ub2RlICphbikKIAogCQlhdGhfdHhxX2xvY2soc2MsIHR4cSk7 CiAJCXRpZC0+Y2xlYXJfcHNfZmlsdGVyID0gdHJ1ZTsKLQkJaWYgKGF0aF90aWRfaGFzX2J1ZmZl cmVkKHRpZCkpIHsKKwkJaWYgKCFza2JfcXVldWVfZW1wdHkoJnRpZC0+cmV0cnlfcSkpIHsKIAkJ CWF0aF90eF9xdWV1ZV90aWQoc2MsIHRpZCk7CiAJCQlhdGhfdHhxX3NjaGVkdWxlKHNjLCB0eHEp OwogCQl9CiAJCWF0aF90eHFfdW5sb2NrX2NvbXBsZXRlKHNjLCB0eHEpOworCiAJfQogfQogCkBA IC0xNjk3LDkgKzE2MzEsOSBAQCB2b2lkIGF0aDlrX3JlbGVhc2VfYnVmZmVyZWRfZnJhbWVzKHN0 cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCXN0cnVjdCBhdGhfdHhxICp0eHEgPSBzYy0+dHgudWFw c2RxOwogCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbzsKIAlzdHJ1Y3QgbGlzdF9oZWFk IGJmX3E7Ci0Jc3RydWN0IGF0aF9idWYgKmJmX3RhaWwgPSBOVUxMLCAqYmY7CisJc3RydWN0IGF0 aF9idWYgKmJmX3RhaWwgPSBOVUxMLCAqYmYgPSBOVUxMOwogCWludCBzZW50ID0gMDsKLQlpbnQg aTsKKwlpbnQgaSwgcmV0OwogCiAJSU5JVF9MSVNUX0hFQUQoJmJmX3EpOwogCWZvciAoaSA9IDA7 IHRpZHMgJiYgbmZyYW1lczsgaSsrLCB0aWRzID4+PSAxKSB7CkBAIC0xNzEyLDggKzE2NDYsOCBA QCB2b2lkIGF0aDlrX3JlbGVhc2VfYnVmZmVyZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfaHcg Kmh3LAogCiAJCWF0aF90eHFfbG9jayhzYywgdGlkLT50eHEpOwogCQl3aGlsZSAobmZyYW1lcyA+ IDApIHsKLQkJCWJmID0gYXRoX3R4X2dldF90aWRfc3ViZnJhbWUoc2MsIHNjLT50eC51YXBzZHEs IHRpZCk7Ci0JCQlpZiAoIWJmKQorCQkJcmV0ID0gYXRoX3R4X2dldF90aWRfc3ViZnJhbWUoc2Ms IHNjLT50eC51YXBzZHEsIHRpZCwgJmJmKTsKKwkJCWlmIChyZXQgPCAwKQogCQkJCWJyZWFrOwog CiAJCQlhdGg5a19zZXRfbW9yZWRhdGEoc2MsIGJmLCB0cnVlKTsKQEAgLTE5NzksMTEgKzE5MTMs MTEgQEAgdm9pZCBhdGhfdHhfY2xlYW51cHEoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBh dGhfdHhxICp0eHEpCiAgKi8KIHZvaWQgYXRoX3R4cV9zY2hlZHVsZShzdHJ1Y3QgYXRoX3NvZnRj ICpzYywgc3RydWN0IGF0aF90eHEgKnR4cSkKIHsKKwlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9 IHNjLT5odzsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNj LT5zY19haCk7CisJc3RydWN0IGllZWU4MDIxMV90eHEgKnF1ZXVlOwogCXN0cnVjdCBhdGhfYXR4 X3RpZCAqdGlkOwotCXN0cnVjdCBsaXN0X2hlYWQgKnRpZF9saXN0OwotCXN0cnVjdCBhdGhfYWNx ICphY3E7Ci0JYm9vbCBhY3RpdmUgPSBBSVJUSU1FX0FDVElWRShzYy0+YWlydGltZV9mbGFncyk7 CisJaW50IHJldDsKIAogCWlmICh0eHEtPm1hYzgwMjExX3FudW0gPCAwKQogCQlyZXR1cm47CkBA IC0xOTkxLDU4ICsxOTI1LDI2IEBAIHZvaWQgYXRoX3R4cV9zY2hlZHVsZShzdHJ1Y3QgYXRoX3Nv ZnRjICpzYywgc3RydWN0IGF0aF90eHEgKnR4cSkKIAlpZiAodGVzdF9iaXQoQVRIX09QX0hXX1JF U0VULCAmY29tbW9uLT5vcF9mbGFncykpCiAJCXJldHVybjsKIAorCWllZWU4MDIxMV90eHFfc2No ZWR1bGVfc3RhcnQoaHcsIHR4cS0+bWFjODAyMTFfcW51bSk7CiAJc3Bpbl9sb2NrX2JoKCZzYy0+ Y2hhbl9sb2NrKTsKIAlyY3VfcmVhZF9sb2NrKCk7Ci0JYWNxID0gJnNjLT5jdXJfY2hhbi0+YWNx W3R4cS0+bWFjODAyMTFfcW51bV07CiAKIAlpZiAoc2MtPmN1cl9jaGFuLT5zdG9wcGVkKQogCQln b3RvIG91dDsKIAotYmVnaW46Ci0JdGlkX2xpc3QgPSAmYWNxLT5hY3FfbmV3OwotCWlmIChsaXN0 X2VtcHR5KHRpZF9saXN0KSkgewotCQl0aWRfbGlzdCA9ICZhY3EtPmFjcV9vbGQ7Ci0JCWlmIChs aXN0X2VtcHR5KHRpZF9saXN0KSkKLQkJCWdvdG8gb3V0OwotCX0KLQl0aWQgPSBsaXN0X2ZpcnN0 X2VudHJ5KHRpZF9saXN0LCBzdHJ1Y3QgYXRoX2F0eF90aWQsIGxpc3QpOwotCi0JaWYgKGFjdGl2 ZSAmJiB0aWQtPmFuLT5haXJ0aW1lX2RlZmljaXRbdHhxLT5tYWM4MDIxMV9xbnVtXSA8PSAwKSB7 Ci0JCXNwaW5fbG9ja19iaCgmYWNxLT5sb2NrKTsKLQkJdGlkLT5hbi0+YWlydGltZV9kZWZpY2l0 W3R4cS0+bWFjODAyMTFfcW51bV0gKz0gQVRIX0FJUlRJTUVfUVVBTlRVTTsKLQkJbGlzdF9tb3Zl X3RhaWwoJnRpZC0+bGlzdCwgJmFjcS0+YWNxX29sZCk7Ci0JCXNwaW5fdW5sb2NrX2JoKCZhY3Et PmxvY2spOwotCQlnb3RvIGJlZ2luOwotCX0KLQotCWlmICghYXRoX3RpZF9oYXNfYnVmZmVyZWQo dGlkKSkgewotCQlzcGluX2xvY2tfYmgoJmFjcS0+bG9jayk7Ci0JCWlmICgodGlkX2xpc3QgPT0g JmFjcS0+YWNxX25ldykgJiYgIWxpc3RfZW1wdHkoJmFjcS0+YWNxX29sZCkpCi0JCQlsaXN0X21v dmVfdGFpbCgmdGlkLT5saXN0LCAmYWNxLT5hY3Ffb2xkKTsKLQkJZWxzZSB7Ci0JCQlsaXN0X2Rl bF9pbml0KCZ0aWQtPmxpc3QpOwotCQl9Ci0JCXNwaW5fdW5sb2NrX2JoKCZhY3EtPmxvY2spOwot CQlnb3RvIGJlZ2luOwotCX0KKwl3aGlsZSAoKHF1ZXVlID0gaWVlZTgwMjExX25leHRfdHhxKGh3 LCB0eHEtPm1hYzgwMjExX3FudW0pKSkgeworCQl0aWQgPSAoc3RydWN0IGF0aF9hdHhfdGlkICop IHF1ZXVlLT5kcnZfcHJpdjsKIAorCQlyZXQgPSBhdGhfdHhfc2NoZWRfYWdncihzYywgdHhxLCB0 aWQpOworCQlhdGhfZGJnKGNvbW1vbiwgUVVFVUUsICJhdGhfdHhfc2NoZWRfYWdnciByZXR1cm5l ZCAlZFxuIiwgcmV0KTsKIAotCS8qCi0JICogSWYgd2Ugc3VjY2VlZCBpbiBzY2hlZHVsaW5nIHNv bWV0aGluZywgaW1tZWRpYXRlbHkgcmVzdGFydCB0byBtYWtlCi0JICogc3VyZSB3ZSBrZWVwIHRo ZSBIVyBidXN5LgotCSAqLwotCWlmKGF0aF90eF9zY2hlZF9hZ2dyKHNjLCB0eHEsIHRpZCkpIHsK LQkJaWYgKCFhY3RpdmUpIHsKLQkJCXNwaW5fbG9ja19iaCgmYWNxLT5sb2NrKTsKLQkJCWxpc3Rf bW92ZV90YWlsKCZ0aWQtPmxpc3QsICZhY3EtPmFjcV9vbGQpOwotCQkJc3Bpbl91bmxvY2tfYmgo JmFjcS0+bG9jayk7Ci0JCX0KLQkJZ290byBiZWdpbjsKKwkJaWVlZTgwMjExX3JldHVybl90eHEo aHcsIHF1ZXVlKTsKIAl9CiAKIG91dDoKIAlyY3VfcmVhZF91bmxvY2soKTsKIAlzcGluX3VubG9j a19iaCgmc2MtPmNoYW5fbG9jayk7CisJaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoaHcsIHR4 cS0+bWFjODAyMTFfcW51bSk7CiB9CiAKIHZvaWQgYXRoX3R4cV9zY2hlZHVsZV9hbGwoc3RydWN0 IGF0aF9zb2Z0YyAqc2MpCkBAIC0yODg2LDkgKzI3ODgsNiBAQCB2b2lkIGF0aF90eF9ub2RlX2lu aXQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfbm9kZSAqYW4pCiAJc3RydWN0IGF0 aF9hdHhfdGlkICp0aWQ7CiAJaW50IHRpZG5vLCBhY25vOwogCi0JZm9yIChhY25vID0gMDsgYWNu byA8IElFRUU4MDIxMV9OVU1fQUNTOyBhY25vKyspCi0JCWFuLT5haXJ0aW1lX2RlZmljaXRbYWNu b10gPSBBVEhfQUlSVElNRV9RVUFOVFVNOwotCiAJZm9yICh0aWRubyA9IDA7IHRpZG5vIDwgSUVF RTgwMjExX05VTV9USURTOyB0aWRubysrKSB7CiAJCXRpZCA9IGF0aF9ub2RlX3RvX3RpZChhbiwg dGlkbm8pOwogCQl0aWQtPmFuICAgICAgICA9IGFuOwpAQCAtMjg5OCw3ICsyNzk3LDYgQEAgdm9p ZCBhdGhfdHhfbm9kZV9pbml0KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX25vZGUg KmFuKQogCQl0aWQtPmJhd19oZWFkICA9IHRpZC0+YmF3X3RhaWwgPSAwOwogCQl0aWQtPmFjdGl2 ZQkgICA9IGZhbHNlOwogCQl0aWQtPmNsZWFyX3BzX2ZpbHRlciA9IHRydWU7Ci0JCXRpZC0+aGFz X3F1ZXVlZCAgPSBmYWxzZTsKIAkJX19za2JfcXVldWVfaGVhZF9pbml0KCZ0aWQtPnJldHJ5X3Ep OwogCQlJTklUX0xJU1RfSEVBRCgmdGlkLT5saXN0KTsKIAkJYWNubyA9IFRJRF9UT19XTUVfQUMo dGlkbm8pOwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwphdGgxMGsgbWFpbGluZyBsaXN0CmF0aDEwa0BsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYXRoMTBrCg==