From owner-freebsd-wireless@FreeBSD.ORG Tue Nov 15 00:07:39 2011 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 95974106564A for ; Tue, 15 Nov 2011 00:07:39 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-vx0-f182.google.com (mail-vx0-f182.google.com [209.85.220.182]) by mx1.freebsd.org (Postfix) with ESMTP id 4F8D58FC0A for ; Tue, 15 Nov 2011 00:07:37 +0000 (UTC) Received: by vcbfo14 with SMTP id fo14so8212495vcb.13 for ; Mon, 14 Nov 2011 16:07:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=pZtL7orRiKQIKurcqoWt75E6NekMKmRVEVM7mFvUT9g=; b=eYD+sD2N0ODMeaoF+1hC9N0cexDtSVATP7x9U6AIzFs4G66CPdwX0N6Z64c1FHBw9i O/xLS0zirgT/Tao+e1feTXkgqkyRd6o8/kA2ht38k7omEBdwwzCXSbtHVHV+7s5wE2L/ ZR1MH3HWfQrUNHCk+s6w1/3B9SJ8UzCYmxwqQ= MIME-Version: 1.0 Received: by 10.52.68.164 with SMTP id x4mr39141058vdt.54.1321315656798; Mon, 14 Nov 2011 16:07:36 -0800 (PST) Received: by 10.52.29.198 with HTTP; Mon, 14 Nov 2011 16:07:36 -0800 (PST) Date: Mon, 14 Nov 2011 16:07:36 -0800 Message-ID: From: Adrian Chadd To: freebsd-wireless@freebsd.org Content-Type: multipart/mixed; boundary=20cf307f30a25c138804b1bac652 Subject: [patch] teach ath(4) to not flush frames during reset or run reset/tx/rx concurrently X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussions of 802.11 stack, tools device driver development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Nov 2011 00:07:39 -0000 --20cf307f30a25c138804b1bac652 Content-Type: text/plain; charset=ISO-8859-1 Hi, One of my major outstanding issues with the atheros 11n tx/rx support is to not flush frames out of the tx and rx queue during a queue reset (eg during fatal errors, stuck beacon, etc.) I can't (yet) do much when operational changes occur. I'll work on that in subsequent commits. I'd appreciate testing and feedback before I merge this into -HEAD. Thanks, Adrian --20cf307f30a25c138804b1bac652 Content-Type: application/octet-stream; name="freebsd-head-reset-noloss.diff" Content-Disposition: attachment; filename="freebsd-head-reset-noloss.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gv0558hm0 ZGlmZiAtLWdpdCBhL3N5cy9kZXYvYXRoL2lmX2F0aC5jIGIvc3lzL2Rldi9hdGgvaWZfYXRoLmMK aW5kZXggYzM0ODVlNC4uMzliYTRlZiAxMDA2NDQKLS0tIGEvc3lzL2Rldi9hdGgvaWZfYXRoLmMK KysrIGIvc3lzL2Rldi9hdGgvaWZfYXRoLmMKQEAgLTE4MTksNiArMTgxOSw0MiBAQCBhdGhfc3Rv cF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnApCiB9CiAKIHN0YXRpYyB2b2lkCithdGhfdHhyeF9z dG9wKHN0cnVjdCBhdGhfc29mdGMgKnNjKQoreworCWludCBpID0gMTAwMDsKKworCUFUSF9VTkxP Q0tfQVNTRVJUKHNjKTsKKworCS8qIFN0b3AgYW55IG5ldyBUWC9SWCBmcm9tIG9jY3VyaW5nICov CisJdGFza3F1ZXVlX2Jsb2NrKHNjLT5zY190cSk7CisKKwlBVEhfTE9DSyhzYyk7CisKKwkvKgor CSAqIFNsZWVwIHVudGlsIGFsbCB0aGUgcGVuZGluZyBvcGVyYXRpb25zIGhhdmUgY29tcGxldGVk LgorCSAqCisJICogVGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IHJlc2V0IGhhcyBiZWVuIGlu Y3JlbWVudGVkCisJICogb3IgdGhpcyB3b24ndCBldmVyIG9jY3VyLgorCSAqLworCXdoaWxlIChz Yy0+c2Nfcnhwcm9jX2NudCB8fCBzYy0+c2NfdHhwcm9jX2NudCB8fAorCSAgICBzYy0+c2NfdHhz dGFydF9jbnQpIHsKKwkgICAgCWlmIChpIDw9IDApCisJCQlicmVhazsKKwkJbXNsZWVwKHNjLCAm c2MtPnNjX210eCwgMCwgImF0aF90eHJ4X3N0b3AiLCAxKTsKKwkJaS0tOworCX0KKworCUFUSF9V TkxPQ0soc2MpOworfQorCitzdGF0aWMgdm9pZAorYXRoX3R4cnhfc3RhcnQoc3RydWN0IGF0aF9z b2Z0YyAqc2MpCit7CisKKwl0YXNrcXVldWVfdW5ibG9jayhzYy0+c2NfdHEpOworfQorCitzdGF0 aWMgdm9pZAogYXRoX3N0b3Aoc3RydWN0IGlmbmV0ICppZnApCiB7CiAJc3RydWN0IGF0aF9zb2Z0 YyAqc2MgPSBpZnAtPmlmX3NvZnRjOwpAQCAtMTg0MiwxNyArMTg3OCw0MSBAQCBhdGhfcmVzZXQo c3RydWN0IGlmbmV0ICppZnAsIEFUSF9SRVNFVF9UWVBFIHJlc2V0X3R5cGUpCiAJc3RydWN0IGll ZWU4MDIxMWNvbSAqaWMgPSBpZnAtPmlmX2wyY29tOwogCXN0cnVjdCBhdGhfaGFsICphaCA9IHNj LT5zY19haDsKIAlIQUxfU1RBVFVTIHN0YXR1czsKKwlpbnQgaTsKIAogCURQUklOVEYoc2MsIEFU SF9ERUJVR19SRVNFVCwgIiVzOiBjYWxsZWRcbiIsIF9fZnVuY19fKTsKIAorCS8qIFhYWCBlbnN1 cmUgQVRIX0xPQ0sgaXNuJ3QgaGVsZDsgYXRoX3J4X3Byb2MgY2FuJ3QgYmUgbG9ja2VkICovCisJ QVRIX1VOTE9DS19BU1NFUlQoc2MpOworCUFUSF9MT0NLKHNjKTsKKwkvKiBYWFggaWYgd2UncmUg YWxyZWFkeSBpbnNpZGUgYSByZXNldCwgcHJpbnQgb3V0IGEgYmlnIHdhcm5pbmcgKi8KKwlpZiAo c2MtPnNjX2lucmVzZXRfY250ID4gMCkgeworCQlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYsCisJ CSAgICAiJXM6IGNvbmN1cnJlbnQgYXRoX3Jlc2V0KCkhIERhbmdlciFcbiIsCisJCSAgICBfX2Z1 bmNfXyk7CisJfQorCXNjLT5zY19pbnJlc2V0X2NudCsrOworCUFUSF9VTkxPQ0soc2MpOworCisJ LyoKKwkgKiBYWFggc2hvdWxkIG5vdyB3YWl0IGZvciBwZW5kaW5nIFRYL1JYIHRvIGNvbXBsZXRl CisJICogYW5kIGJsb2NrIGZ1dHVyZSBvbmVzIGZyb20gb2NjdXJpbmcuCisJICovCisJYXRoX3R4 cnhfc3RvcChzYyk7CisKIAlhdGhfaGFsX2ludHJzZXQoYWgsIDApOwkJLyogZGlzYWJsZSBpbnRl cnJ1cHRzICovCiAJYXRoX2RyYWludHhxKHNjLCByZXNldF90eXBlKTsJLyogc3RvcCB4bWl0IHNp ZGUgKi8KIAkvKgotCSAqIFhYWCBEb24ndCBmbHVzaCBpZiBBVEhfUkVTRVRfTk9MT1NTO2J1dCB3 ZSBoYXZlIHRvIGZpcnN0Ci0JICogWFhYIG5lZWQgdG8gZW5zdXJlIHRoaXMgZG9lc24ndCByYWNl IHdpdGggYW4gb3V0c3RhbmRpbmcKLQkgKiBYWFggdGFza3F1ZXVlIGNhbGwuCisJICogSWYgd2Un cmUgZG9pbmcgYSBmbHVzaC1sZXNzIGRlcXVldWUsIHRoZW4gc3RvcCBQQ1UKKwkgKiByZWNlaXZl IHNvIHRoZSBGSUZPIGlzbid0IG92ZXJydW4sIHRoZW4gaGFuZGxlCisJICogd2hhdGV2ZXIgZnJh bWVzIGFyZSBpbiB0aGUgcXVldWUuCiAJICovCi0JYXRoX3N0b3ByZWN2KHNjKTsJCS8qIHN0b3Ag cmVjdiBzaWRlICovCisJaWYgKHJlc2V0X3R5cGUgPT0gQVRIX1JFU0VUX05PTE9TUykgeworCQlh dGhfaGFsX3N0b3BwY3VyZWN2KGFoKTsKKwkJYXRoX2hhbF9zZXRyeGZpbHRlcihhaCwgMCk7CisJ CWF0aF9yeF9wcm9jKHNjLCAwKTsKKwl9IGVsc2UKKwkJYXRoX3N0b3ByZWN2KHNjKTsJCS8qIHN0 b3AgcmVjdiBzaWRlICovCiAJYXRoX3NldHRraXBtaWMoc2MpOwkJLyogY29uZmlndXJlIFRLSVAg TUlDIGhhbmRsaW5nICovCiAJLyogTkI6IGluZGljYXRlIGNoYW5uZWwgY2hhbmdlIHNvIHdlIGRv IGEgZnVsbCByZXNldCAqLwogCWlmICghYXRoX2hhbF9yZXNldChhaCwgc2MtPnNjX29wbW9kZSwg aWMtPmljX2N1cmNoYW4sIEFIX1RSVUUsICZzdGF0dXMpKQpAQCAtMTg4MSw2ICsxOTQxLDI2IEBA IGF0aF9yZXNldChzdHJ1Y3QgaWZuZXQgKmlmcCwgQVRIX1JFU0VUX1RZUEUgcmVzZXRfdHlwZSkK IAl9CiAJYXRoX2hhbF9pbnRyc2V0KGFoLCBzYy0+c2NfaW1hc2spOwogCisJQVRIX0xPQ0soc2Mp OworCXNjLT5zY19pbnJlc2V0X2NudC0tOworCUFUSF9VTkxPQ0soc2MpOworCisJLyogUmVzdGFy dCBUWC9SWCBhcyBuZWVkZWQgKi8KKwlhdGhfdHhyeF9zdGFydChzYyk7CisKKwkvKiBYWFggUmVz dGFydCBUWCBjb21wbGV0aW9uIGFuZCBwZW5kaW5nIFRYICovCisJaWYgKHJlc2V0X3R5cGUgPT0g QVRIX1JFU0VUX05PTE9TUykgeworCQlmb3IgKGkgPSAwOyBpIDwgSEFMX05VTV9UWF9RVUVVRVM7 IGkrKykgeworCQkJaWYgKEFUSF9UWFFfU0VUVVAoc2MsIGkpKSB7CisJCQkJQVRIX1RYUV9MT0NL KCZzYy0+c2NfdHhxW2ldKTsKKwkJCQlhdGhfdHhxX3Jlc3RhcnRfZG1hKHNjLCAmc2MtPnNjX3R4 cVtpXSk7CisJCQkJYXRoX3R4cV9zY2hlZChzYywgJnNjLT5zY190eHFbaV0pOworCQkJCUFUSF9U WFFfVU5MT0NLKCZzYy0+c2NfdHhxW2ldKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIEhhbmRsZSBh bnkgZnJhbWVzIGluIHRoZSBUWCBxdWV1ZSAqLwogCWF0aF9zdGFydChpZnApOwkJCS8qIHJlc3Rh cnQgeG1pdCAqLwogCXJldHVybiAwOwogfQpAQCAtMjAyOCw2ICsyMTA4LDE4IEBAIGF0aF9zdGFy dChzdHJ1Y3QgaWZuZXQgKmlmcCkKIAogCWlmICgoaWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJW X1JVTk5JTkcpID09IDAgfHwgc2MtPnNjX2ludmFsaWQpCiAJCXJldHVybjsKKworCS8qIFhYWCBp cyBpdCBvayB0byBob2xkIHRoZSBBVEhfTE9DSyBoZXJlPyAqLworCUFUSF9MT0NLKHNjKTsKKwlp ZiAoc2MtPnNjX2lucmVzZXRfY250ID4gMCkgeworCQlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYs CisJCSAgICAiJXM6IHNjX2lucmVzZXRfY250ID4gMDsgYmFpbGluZ1xuIiwgX19mdW5jX18pOwor CQlBVEhfVU5MT0NLKHNjKTsKKwkJcmV0dXJuOworCX0KKwlzYy0+c2NfdHhzdGFydF9jbnQrKzsK KwlBVEhfVU5MT0NLKHNjKTsKKwogCWZvciAoOzspIHsKIAkJLyoKIAkJICogR3JhYiBhIFRYIGJ1 ZmZlciBhbmQgYXNzb2NpYXRlZCByZXNvdXJjZXMuCkBAIC0yMTExLDYgKzIyMDMsMTAgQEAgYXRo X3N0YXJ0KHN0cnVjdCBpZm5ldCAqaWZwKQogCiAJCXNjLT5zY193ZF90aW1lciA9IDU7CiAJfQor CisJQVRIX0xPQ0soc2MpOworCXNjLT5zY190eHN0YXJ0X2NudC0tOworCUFUSF9VTkxPQ0soc2Mp OwogfQogCiBzdGF0aWMgaW50CkBAIC0zNjg4LDYgKzM3ODQsMTQgQEAgYXRoX3J4X3Rhc2tsZXQo dm9pZCAqYXJnLCBpbnQgbnBlbmRpbmcpCiAKIAlDVFIxKEFUSF9LVFJfSU5UUiwgImF0aF9yeF9w cm9jOiBwZW5kaW5nPSVkIiwgbnBlbmRpbmcpOwogCURQUklOVEYoc2MsIEFUSF9ERUJVR19SWF9Q Uk9DLCAiJXM6IHBlbmRpbmcgJXVcbiIsIF9fZnVuY19fLCBucGVuZGluZyk7CisJQVRIX0xPQ0so c2MpOworCWlmIChzYy0+c2NfaW5yZXNldF9jbnQgPiAwKSB7CisJCWRldmljZV9wcmludGYoc2Mt PnNjX2RldiwKKwkJICAgICIlczogc2NfaW5yZXNldF9jbnQgPiAwOyBza2lwcGluZ1xuIiwgX19m dW5jX18pOworCQlBVEhfVU5MT0NLKHNjKTsKKwkJcmV0dXJuOworCX0KKwlBVEhfVU5MT0NLKHNj KTsKIAlhdGhfcnhfcHJvYyhzYywgMSk7CiB9CiAKQEAgLTM3MTEsNiArMzgxNSwxMyBAQCBhdGhf cnhfcHJvYyhzdHJ1Y3QgYXRoX3NvZnRjICpzYywgaW50IHJlc2NoZWQpCiAJdV9pbnQ2NF90IHRz ZjsKIAlpbnQgbnBrdHMgPSAwOwogCisJLyogWFhYIHdlIG11c3Qgbm90IGhvbGQgdGhlIEFUSF9M T0NLIGhlcmUgKi8KKwlBVEhfVU5MT0NLX0FTU0VSVChzYyk7CisKKwlBVEhfTE9DSyhzYyk7CisJ c2MtPnNjX3J4cHJvY19jbnQrKzsKKwlBVEhfVU5MT0NLKHNjKTsKKwogCURQUklOVEYoc2MsIEFU SF9ERUJVR19SWF9QUk9DLCAiJXM6IGNhbGxlZFxuIiwgX19mdW5jX18pOwogCW5nb29kID0gMDsK IAluZiA9IGF0aF9oYWxfZ2V0Y2hhbm5vaXNlKGFoLCBzYy0+c2NfY3VyY2hhbik7CkBAIC00MDgy LDYgKzQxOTMsMTAgQEAgcnhfbmV4dDoKIAkJCWF0aF9zdGFydChpZnApOwogCX0KICN1bmRlZiBQ QTJERVNDCisKKwlBVEhfTE9DSyhzYyk7CisJc2MtPnNjX3J4cHJvY19jbnQtLTsKKwlBVEhfVU5M T0NLKHNjKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQ1ODksNiArNDcwNCw3IEBAIGF0aF90eF9w cm9jX3EwKHZvaWQgKmFyZywgaW50IG5wZW5kaW5nKQogCXVpbnQzMl90IHR4cXM7CiAKIAlBVEhf TE9DSyhzYyk7CisJc2MtPnNjX3R4cHJvY19jbnQrKzsKIAl0eHFzID0gc2MtPnNjX3R4cV9hY3Rp dmU7CiAJc2MtPnNjX3R4cV9hY3RpdmUgJj0gfnR4cXM7CiAJQVRIX1VOTE9DSyhzYyk7CkBAIC00 NjA0LDYgKzQ3MjAsMTAgQEAgYXRoX3R4X3Byb2NfcTAodm9pZCAqYXJnLCBpbnQgbnBlbmRpbmcp CiAJaWYgKHNjLT5zY19zb2Z0bGVkKQogCQlhdGhfbGVkX2V2ZW50KHNjLCBzYy0+c2NfdHhyaXgp OwogCisJQVRIX0xPQ0soc2MpOworCXNjLT5zY190eHByb2NfY250LS07CisJQVRIX1VOTE9DSyhz Yyk7CisKIAlhdGhfc3RhcnQoaWZwKTsKIH0KIApAQCAtNDYyMCw2ICs0NzQwLDcgQEAgYXRoX3R4 X3Byb2NfcTAxMjModm9pZCAqYXJnLCBpbnQgbnBlbmRpbmcpCiAJdWludDMyX3QgdHhxczsKIAog CUFUSF9MT0NLKHNjKTsKKwlzYy0+c2NfdHhwcm9jX2NudCsrOwogCXR4cXMgPSBzYy0+c2NfdHhx X2FjdGl2ZTsKIAlzYy0+c2NfdHhxX2FjdGl2ZSAmPSB+dHhxczsKIAlBVEhfVU5MT0NLKHNjKTsK QEAgLTQ2NDcsNiArNDc2OCwxMCBAQCBhdGhfdHhfcHJvY19xMDEyMyh2b2lkICphcmcsIGludCBu cGVuZGluZykKIAlpZiAoc2MtPnNjX3NvZnRsZWQpCiAJCWF0aF9sZWRfZXZlbnQoc2MsIHNjLT5z Y190eHJpeCk7CiAKKwlBVEhfTE9DSyhzYyk7CisJc2MtPnNjX3R4cHJvY19jbnQtLTsKKwlBVEhf VU5MT0NLKHNjKTsKKwogCWF0aF9zdGFydChpZnApOwogfQogCkBAIC00NjYyLDYgKzQ3ODcsNyBA QCBhdGhfdHhfcHJvYyh2b2lkICphcmcsIGludCBucGVuZGluZykKIAl1aW50MzJfdCB0eHFzOwog CiAJQVRIX0xPQ0soc2MpOworCXNjLT5zY190eHByb2NfY250Kys7CiAJdHhxcyA9IHNjLT5zY190 eHFfYWN0aXZlOwogCXNjLT5zY190eHFfYWN0aXZlICY9IH50eHFzOwogCUFUSF9VTkxPQ0soc2Mp OwpAQCAtNDY4Miw2ICs0ODA4LDEwIEBAIGF0aF90eF9wcm9jKHZvaWQgKmFyZywgaW50IG5wZW5k aW5nKQogCWlmIChzYy0+c2Nfc29mdGxlZCkKIAkJYXRoX2xlZF9ldmVudChzYywgc2MtPnNjX3R4 cml4KTsKIAorCUFUSF9MT0NLKHNjKTsKKwlzYy0+c2NfdHhwcm9jX2NudC0tOworCUFUSF9VTkxP Q0soc2MpOworCiAJYXRoX3N0YXJ0KGlmcCk7CiB9CiAjdW5kZWYJVFhRQUNUSVZFCkBAIC00ODYz LDkgKzQ5OTMsMTQgQEAgYXRoX2RyYWludHhxKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBBVEhfUkVT RVRfVFlQRSByZXNldF90eXBlKQogCiAJKHZvaWQpIGF0aF9zdG9wdHhkbWEoc2MpOwogCi0JZm9y IChpID0gMDsgaSA8IEhBTF9OVU1fVFhfUVVFVUVTOyBpKyspCi0JCWlmIChBVEhfVFhRX1NFVFVQ KHNjLCBpKSkKLQkJCWF0aF90eF9kcmFpbnR4cShzYywgJnNjLT5zY190eHFbaV0pOworCWZvciAo aSA9IDA7IGkgPCBIQUxfTlVNX1RYX1FVRVVFUzsgaSsrKSB7CisJCWlmIChBVEhfVFhRX1NFVFVQ KHNjLCBpKSkgeworCQkJaWYgKHJlc2V0X3R5cGUgPT0gQVRIX1JFU0VUX05PTE9TUykKKwkJCQlh dGhfdHhfcHJvY2Vzc3Eoc2MsICZzYy0+c2NfdHhxW2ldLCAwKTsKKwkJCWVsc2UKKwkJCQlhdGhf dHhfZHJhaW50eHEoc2MsICZzYy0+c2NfdHhxW2ldKTsKKwkJfQorCX0KICNpZmRlZiBBVEhfREVC VUcKIAlpZiAoc2MtPnNjX2RlYnVnICYgQVRIX0RFQlVHX1JFU0VUKSB7CiAJCXN0cnVjdCBhdGhf YnVmICpiZiA9IFRBSUxRX0ZJUlNUKCZzYy0+c2NfYmJ1Zik7CkBAIC00OTg0LDYgKzUxMTksMTYg QEAgYXRoX2NoYW5fc2V0KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX2No YW5uZWwgKmNoYW4pCiAJc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+c2NfaWZwOwogCXN0cnVjdCBp ZWVlODAyMTFjb20gKmljID0gaWZwLT5pZl9sMmNvbTsKIAlzdHJ1Y3QgYXRoX2hhbCAqYWggPSBz Yy0+c2NfYWg7CisJaW50IHJldCA9IDA7CisKKwkvKiBUcmVhdCB0aGlzIGFzIGFuIGludGVyZmFj ZSByZXNldCAqLworCUFUSF9MT0NLKHNjKTsKKwlpZiAoc2MtPnNjX2lucmVzZXRfY250ID4gMCkK KwkJZGV2aWNlX3ByaW50ZihzYy0+c2NfZGV2LCAiJXM6IGRhbmdlciEgY29uY3VycmVudCByZXNl dCFcbiIsCisJCSAgICBfX2Z1bmNfXyk7CisJc2MtPnNjX2lucmVzZXRfY250Kys7CisJQVRIX1VO TE9DSyhzYyk7CisJYXRoX3R4cnhfc3RvcChzYyk7CiAKIAlEUFJJTlRGKHNjLCBBVEhfREVCVUdf UkVTRVQsICIlczogJXUgKCV1IE1IeiwgZmxhZ3MgMHgleClcbiIsCiAJICAgIF9fZnVuY19fLCBp ZWVlODAyMTFfY2hhbjJpZWVlKGljLCBjaGFuKSwKQEAgLTUwMDQsNyArNTE0OSw4IEBAIGF0aF9j aGFuX3NldChzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpj aGFuKQogCQkJICAgICJjaGFubmVsICV1ICgldSBNSHosIGZsYWdzIDB4JXgpLCBoYWwgc3RhdHVz ICV1XG4iLAogCQkJICAgIF9fZnVuY19fLCBpZWVlODAyMTFfY2hhbjJpZWVlKGljLCBjaGFuKSwK IAkJCSAgICBjaGFuLT5pY19mcmVxLCBjaGFuLT5pY19mbGFncywgc3RhdHVzKTsKLQkJCXJldHVy biBFSU87CisJCQlyZXQgPSBFSU87CisJCQlnb3RvIGZpbmlzaDsKIAkJfQogCQlzYy0+c2NfZGl2 ZXJzaXR5ID0gYXRoX2hhbF9nZXRkaXZlcnNpdHkoYWgpOwogCkBAIC01MDE3LDcgKzUxNjMsOCBA QCBhdGhfY2hhbl9zZXQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBpZWVlODAyMTFfY2hh bm5lbCAqY2hhbikKIAkJaWYgKGF0aF9zdGFydHJlY3Yoc2MpICE9IDApIHsKIAkJCWlmX3ByaW50 ZihpZnAsICIlczogdW5hYmxlIHRvIHJlc3RhcnQgcmVjdiBsb2dpY1xuIiwKIAkJCSAgICBfX2Z1 bmNfXyk7Ci0JCQlyZXR1cm4gRUlPOworCQkJcmV0ID0gRUlPOworCQkJZ290byBmaW5pc2g7CiAJ CX0KIAogCQkvKgpAQCAtNTA0NCw3ICs1MTkxLDE0IEBAIGF0aF9jaGFuX3NldChzdHJ1Y3QgYXRo X3NvZnRjICpzYywgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuKQogCQkgKi8KIAkJYXRo X2hhbF9pbnRyc2V0KGFoLCBzYy0+c2NfaW1hc2spOwogCX0KLQlyZXR1cm4gMDsKKworZmluaXNo OgorCUFUSF9MT0NLKHNjKTsKKwlzYy0+c2NfaW5yZXNldF9jbnQtLTsKKwlBVEhfVU5MT0NLKHNj KTsKKwlhdGhfdHhyeF9zdGFydChzYyk7CisKKwlyZXR1cm4gcmV0OwogfQogCiAvKgpAQCAtNTA4 Nyw3ICs1MjQxLDE4IEBAIGF0aF9jYWxpYnJhdGUodm9pZCAqYXJnKQogCQkJRFBSSU5URihzYywg QVRIX0RFQlVHX0NBTElCUkFURSwKIAkJCQkiJXM6IHJmZ2FpbiBjaGFuZ2VcbiIsIF9fZnVuY19f KTsKIAkJCXNjLT5zY19zdGF0cy5hc3RfcGVyX3JmZ2FpbisrOworCQkJLyoKKwkJCSAqIERyb3Ag bG9jayAtIHdlIGNhbid0IGhvbGQgaXQgYWNyb3NzIHRoZQorCQkJICogYXRoX3Jlc2V0KCkgY2Fs bC4gSW5zdGVhZCwgd2UnbGwgZHJvcAorCQkJICogb3V0IGhlcmUsIGRvIGEgcmVzZXQsIHRoZW4g cmVzY2hlZHVsZQorCQkJICogdGhlIGNhbGxvdXQuCisJCQkgKi8KKwkJCWNhbGxvdXRfcmVzZXQo JnNjLT5zY19jYWxfY2gsIDEsIGF0aF9jYWxpYnJhdGUsIHNjKTsKKwkJCXNjLT5zY19yZXNldGNh bCA9IDA7CisJCQlzYy0+c2NfZG9yZXNldGNhbCA9IEFIX1RSVUU7CisJCQlBVEhfVU5MT0NLKHNj KTsKIAkJCWF0aF9yZXNldChpZnAsIEFUSF9SRVNFVF9OT0xPU1MpOworCQkJcmV0dXJuOwogCQl9 CiAJCS8qCiAJCSAqIElmIHRoaXMgbG9uZyBjYWwgaXMgYWZ0ZXIgYW4gaWRsZSBwZXJpb2QsIHRo ZW4KQEAgLTU3NDIsNiArNTkwNyw3IEBAIHN0YXRpYyB2b2lkCiBhdGhfd2F0Y2hkb2codm9pZCAq YXJnKQogewogCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gYXJnOworCWludCBkb19yZXNldCA9IDA7 CiAKIAlpZiAoc2MtPnNjX3dkX3RpbWVyICE9IDAgJiYgLS1zYy0+c2Nfd2RfdGltZXIgPT0gMCkg ewogCQlzdHJ1Y3QgaWZuZXQgKmlmcCA9IHNjLT5zY19pZnA7CkBAIC01NzUzLDEwICs1OTE5LDIw IEBAIGF0aF93YXRjaGRvZyh2b2lkICphcmcpCiAJCQkgICAgaGFuZ3MgJiAweGZmID8gImJiIiA6 ICJtYWMiLCBoYW5ncyk7CiAJCX0gZWxzZQogCQkJaWZfcHJpbnRmKGlmcCwgImRldmljZSB0aW1l b3V0XG4iKTsKLQkJYXRoX3Jlc2V0KGlmcCwgQVRIX1JFU0VUX05PTE9TUyk7CisJCWRvX3Jlc2V0 ID0gMTsKIAkJaWZwLT5pZl9vZXJyb3JzKys7CiAJCXNjLT5zY19zdGF0cy5hc3Rfd2F0Y2hkb2cr KzsKIAl9CisKKwkvKgorCSAqIFdlIGNhbid0IGhvbGQgdGhlIGxvY2sgYWNyb3NzIHRoZSBhdGhf cmVzZXQoKSBjYWxsLgorCSAqLworCWlmIChkb19yZXNldCkgeworCQlBVEhfVU5MT0NLKHNjKTsK KwkJYXRoX3Jlc2V0KHNjLT5zY19pZnAsIEFUSF9SRVNFVF9OT0xPU1MpOworCQlBVEhfTE9DSyhz Yyk7CisJfQorCiAJY2FsbG91dF9zY2hlZHVsZSgmc2MtPnNjX3dkX2NoLCBoeik7CiB9CiAKZGlm ZiAtLWdpdCBhL3N5cy9kZXYvYXRoL2lmX2F0aF90eC5jIGIvc3lzL2Rldi9hdGgvaWZfYXRoX3R4 LmMKaW5kZXggYjhjNGM4MC4uMWE4Mzk3ZiAxMDA2NDQKLS0tIGEvc3lzL2Rldi9hdGgvaWZfYXRo X3R4LmMKKysrIGIvc3lzL2Rldi9hdGgvaWZfYXRoX3R4LmMKQEAgLTQ3Nyw4ICs0NzcsNiBAQCBh dGhfdHhfaGFuZG9mZl9tY2FzdChzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90eHEg KnR4cSwKIAl0eHEtPmF4cV9saW5rID0gJmJmLT5iZl9sYXN0ZHMtPmRzX2xpbms7CiB9CiAKLQot CiAvKgogICogSGFuZC1vZmYgcGFja2V0IHRvIGEgaGFyZHdhcmUgcXVldWUuCiAgKi8KQEAgLTUw MSw2ICs0OTksMjkgQEAgYXRoX3R4X2hhbmRvZmZfaHcoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0 cnVjdCBhdGhfdHhxICp0eHEsIHN0cnVjdCBhdGhfYnVmICpiZikKIAlLQVNTRVJUKHR4cS0+YXhx X3FudW0gIT0gQVRIX1RYUV9TV1EsCiAJICAgICAoImF0aF90eF9oYW5kb2ZmX2h3IGNhbGxlZCBm b3IgbWNhc3QgcXVldWUiKSk7CiAKKwlBVEhfTE9DSyhzYyk7CisJaWYgKHNjLT5zY19pbnJlc2V0 X2NudCkgeworCQlBVEhfVU5MT0NLKHNjKTsKKwkJRFBSSU5URihzYywgQVRIX0RFQlVHX1JFU0VU LAorCQkgICAgIiVzOiBjYWxsZWQgd2l0aCBzY19pbl9yZXNldCAhPSAwXG4iLAorCQkgICAgX19m dW5jX18pOworCQlEUFJJTlRGKHNjLCBBVEhfREVCVUdfWE1JVCwKKwkJICAgICIlczogcXVldWVk OiBUWERQWyV1XSA9ICVwICglcCkgZGVwdGggJWRcbiIsCisJCSAgICBfX2Z1bmNfXywgdHhxLT5h eHFfcW51bSwKKwkJICAgIChjYWRkcl90KWJmLT5iZl9kYWRkciwgYmYtPmJmX2Rlc2MsCisJCSAg ICB0eHEtPmF4cV9kZXB0aCk7CisJCUFUSF9UWFFfSU5TRVJUX1RBSUwodHhxLCBiZiwgYmZfbGlz dCk7CisJCWlmIChiZi0+YmZfc3RhdGUuYmZzX2FnZ3IpCisJCQl0eHEtPmF4cV9hZ2dyX2RlcHRo Kys7CisJCS8qCisJCSAqIFRoZXJlJ3Mgbm8gbmVlZCB0byB1cGRhdGUgYXhxX2xpbms7IHRoZSBo YXJkd2FyZQorCQkgKiBpcyBpbiByZXNldCBhbmQgb25jZSB0aGUgcmVzZXQgaXMgY29tcGxldGUs IGFueQorCQkgKiBub24tZW1wdHkgcXVldWVzIHdpbGwgc2ltcGx5IGhhdmUgRE1BIHJlc3RhcnRl ZC4KKwkJICovCisJCXJldHVybjsKKwl9CisJQVRIX1VOTE9DSyhzYyk7CisKIAkvKiBGb3Igbm93 LCBzbyBub3QgdG8gZ2VuZXJhdGUgd2hpdGVzcGFjZSBkaWZmcyAqLwogCWlmICgxKSB7CiAjaWZk ZWYgSUVFRTgwMjExX1NVUFBPUlRfVERNQQpAQCAtMTY4OCw2ICsxNzA5LDE3IEBAIGF0aF9yYXdf eG1pdChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBzdHJ1Y3QgbWJ1ZiAqbSwKIAlzdHJ1Y3Qg YXRoX2J1ZiAqYmY7CiAJaW50IGVycm9yOwogCisJQVRIX0xPQ0soc2MpOworCWlmIChzYy0+c2Nf aW5yZXNldF9jbnQgPiAwKSB7CisJCWRldmljZV9wcmludGYoc2MtPnNjX2RldiwgIiVzOiBzY19p bnJlc2V0X2NudCA+IDA7IGJhaWxpbmdcbiIsCisJCSAgICBfX2Z1bmNfXyk7CisJCWVycm9yID0g RUlPOworCQlBVEhfVU5MT0NLKHNjKTsKKwkJZ290byBiYWQwOworCX0KKwlzYy0+c2NfdHhzdGFy dF9jbnQrKzsKKwlBVEhfVU5MT0NLKHNjKTsKKwogCWlmICgoaWZwLT5pZl9kcnZfZmxhZ3MgJiBJ RkZfRFJWX1JVTk5JTkcpID09IDAgfHwgc2MtPnNjX2ludmFsaWQpIHsKIAkJRFBSSU5URihzYywg QVRIX0RFQlVHX1hNSVQsICIlczogZGlzY2FyZCBmcmFtZSwgJXMiLCBfX2Z1bmNfXywKIAkJICAg IChpZnAtPmlmX2Rydl9mbGFncyAmIElGRl9EUlZfUlVOTklORykgPT0gMCA/CkBAIC0xNzMwLDE1 ICsxNzYyLDI0IEBAIGF0aF9yYXdfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBzdHJ1 Y3QgbWJ1ZiAqbSwKIAlpZnAtPmlmX29wYWNrZXRzKys7CiAJc2MtPnNjX3N0YXRzLmFzdF90eF9y YXcrKzsKIAorCUFUSF9MT0NLKHNjKTsKKwlzYy0+c2NfdHhzdGFydF9jbnQtLTsKKwlBVEhfVU5M T0NLKHNjKTsKKwogCXJldHVybiAwOwogYmFkMjoKIAlBVEhfVFhCVUZfTE9DSyhzYyk7CiAJVEFJ TFFfSU5TRVJUX0hFQUQoJnNjLT5zY190eGJ1ZiwgYmYsIGJmX2xpc3QpOwogCUFUSF9UWEJVRl9V TkxPQ0soc2MpOwogYmFkOgorCUFUSF9MT0NLKHNjKTsKKwlzYy0+c2NfdHhzdGFydF9jbnQtLTsK KwlBVEhfVU5MT0NLKHNjKTsKK2JhZDA6CiAJaWZwLT5pZl9vZXJyb3JzKys7CiAJc2MtPnNjX3N0 YXRzLmFzdF90eF9yYXdfZmFpbCsrOwogCWllZWU4MDIxMV9mcmVlX25vZGUobmkpOworCiAJcmV0 dXJuIGVycm9yOwogfQogCmRpZmYgLS1naXQgYS9zeXMvZGV2L2F0aC9pZl9hdGh2YXIuaCBiL3N5 cy9kZXYvYXRoL2lmX2F0aHZhci5oCmluZGV4IDIxODI5YTYyLi40NDc2MmEwIDEwMDY0NAotLS0g YS9zeXMvZGV2L2F0aC9pZl9hdGh2YXIuaAorKysgYi9zeXMvZGV2L2F0aC9pZl9hdGh2YXIuaApA QCAtNDI0LDYgKzQyNCw3IEBAIHN0cnVjdCBhdGhfc29mdGMgewogCXVfaW50CQkJc2NfdHhhbnRl bm5hOwkvKiB0eCBhbnRlbm5hIChmaXhlZCBvciBhdXRvKSAqLwogCiAJSEFMX0lOVAkJCXNjX2lt YXNrOwkvKiBpbnRlcnJ1cHQgbWFzayBjb3B5ICovCisKIAkvKgogCSAqIFRoZXNlIGFyZSBtb2Rp ZmllZCBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIgYXMgd2VsbCBhcwogCSAqIHRoZSB0YXNrIHF1 ZXVlcyBhbmQgb3RoZXIgY29udGV4dHMuIFRodXMgdGhlc2UgbXVzdCBiZQpAQCAtNDM0LDYgKzQz NSwxMSBAQCBzdHJ1Y3QgYXRoX3NvZnRjIHsKIAkgKi8KIAl1aW50MzJfdAkJc2NfdHhxX2FjdGl2 ZTsJLyogYml0bWFwIG9mIGFjdGl2ZSBUWFFzICovCiAJdWludDMyX3QJCXNjX2tpY2twY3U7CS8q IHdoZXRoZXIgdG8ga2ljayB0aGUgUENVICovCisJdWludDMyX3QJCXNjX3J4cHJvY19jbnQ7CS8q IEluIFJYIHByb2Nlc3NpbmcgKi8KKwl1aW50MzJfdAkJc2NfdHhwcm9jX2NudDsJLyogSW4gVFgg cHJvY2Vzc2luZyAqLworCXVpbnQzMl90CQlzY190eHN0YXJ0X2NudDsJLyogSW4gVFggb3V0cHV0 IChyYXcvc3RhcnQpICovCisJdWludDMyX3QJCXNjX2lucmVzZXRfY250OwkvKiBJbiBhY3RpdmUg cmVzZXQvY2hhbmNoYW5nZSAqLworCXVpbnQzMl90CQlzY190eHJ4X2NudDsJLyogcmVmY291bnQg b24gc3RvcC9zdGFydCdpbmcgVFggKi8KIAogCXVfaW50CQkJc2Nfa2V5bWF4OwkvKiBzaXplIG9m IGtleSBjYWNoZSAqLwogCXVfaW50OF90CQlzY19rZXltYXBbQVRIX0tFWUJZVEVTXTsvKiBrZXkg dXNlIGJpdCBtYXAgKi8KQEAgLTU1Myw2ICs1NTksNyBAQCBzdHJ1Y3QgYXRoX3NvZnRjIHsKICNk ZWZpbmUJQVRIX0xPQ0soX3NjKQkJbXR4X2xvY2soJihfc2MpLT5zY19tdHgpCiAjZGVmaW5lCUFU SF9VTkxPQ0soX3NjKQkJbXR4X3VubG9jaygmKF9zYyktPnNjX210eCkKICNkZWZpbmUJQVRIX0xP Q0tfQVNTRVJUKF9zYykJbXR4X2Fzc2VydCgmKF9zYyktPnNjX210eCwgTUFfT1dORUQpCisjZGVm aW5lCUFUSF9VTkxPQ0tfQVNTRVJUKF9zYykJbXR4X2Fzc2VydCgmKF9zYyktPnNjX210eCwgTUFf Tk9UT1dORUQpCiAKIC8qCiAgKiBUaGUgUENVIGxvY2sgaXMgbm9uLXJlY3Vyc2l2ZSBhbmQgc2hv dWxkIGJlIHRyZWF0ZWQgYXMgYSBzcGlubG9jay4K --20cf307f30a25c138804b1bac652--