From owner-freebsd-wireless@FreeBSD.ORG Mon Aug 29 12:01:48 2011 Return-Path: <owner-freebsd-wireless@FreeBSD.ORG> 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 660FE106564A; Mon, 29 Aug 2011 12:01:48 +0000 (UTC) (envelope-from paradyse@gmail.com) Received: from mail-gy0-f182.google.com (mail-gy0-f182.google.com [209.85.160.182]) by mx1.freebsd.org (Postfix) with ESMTP id F340F8FC22; Mon, 29 Aug 2011 12:01:47 +0000 (UTC) Received: by gyd10 with SMTP id 10so5636999gyd.13 for <multiple recipients>; Mon, 29 Aug 2011 05:01:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:from:date:x-google-sender-auth:message-id :subject:to:cc:content-type; bh=RjBvJNpKFLaTLlG0kYwhSbizFGtOjiECi0fRGmyfSY0=; b=u40emcZ+OFzXdJiPYO2jA6bW3gcOJV68z8+gid+v1D6ok3BVCt9hD9K+KiBK+H6wVM Umm4Y/zjRQaQhvhs83pH24ZwJVal6DxaxNLnRmVQLnzYdTDkJ/paVvtSw8Uz6RdxtVFV O2wJa78dAn7KDosRxr0s4PosIAyeb/nrspL14= Received: by 10.150.198.18 with SMTP id v18mr4882569ybf.24.1314619307099; Mon, 29 Aug 2011 05:01:47 -0700 (PDT) MIME-Version: 1.0 Sender: paradyse@gmail.com Received: by 10.150.144.15 with HTTP; Mon, 29 Aug 2011 05:01:27 -0700 (PDT) From: Kang Yin Su <cantona@cantona.net> Date: Mon, 29 Aug 2011 20:01:27 +0800 X-Google-Sender-Auth: Qh0SP8slukgh-ulrcDaX3HaMMi4 Message-ID: <CAHjFwoDRFMGRJnCCd9PQcksZ-pEg=SUAL1q-4scOnXjmTQArYQ@mail.gmail.com> To: freebsd-wireless@freebsd.org Content-Type: multipart/mixed; boundary=000e0cd3065cd0884204aba3a881 Cc: Subject: [PATCH] TDMA beacon from slave station 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." <freebsd-wireless.freebsd.org> List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-wireless>, <mailto:freebsd-wireless-request@freebsd.org?subject=unsubscribe> List-Archive: <http://lists.freebsd.org/pipermail/freebsd-wireless> List-Post: <mailto:freebsd-wireless@freebsd.org> List-Help: <mailto:freebsd-wireless-request@freebsd.org?subject=help> List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-wireless>, <mailto:freebsd-wireless-request@freebsd.org?subject=subscribe> X-List-Received-Date: Mon, 29 Aug 2011 12:01:48 -0000 --000e0cd3065cd0884204aba3a881 Content-Type: text/plain; charset=ISO-8859-1 Hi all, This patch modify the following: 1. Relocate 'ath_hal_*' functions from if_ath.c to appropriate HAL layer and moved those common functions to ah.c 2. The next TBTT register mistakenly used in AR6416 that cause intermittent beacons transmit form a TDMA slave station. - Use AR_NEXT_TBTT instead of AR_TIMER0 for AR5416. 3. Do not adjust the beacon timers when 'tudelta' value is multiple of tdmabintval value. It causes the timers to stop and beacon stuck. Thanks, Yin --000e0cd3065cd0884204aba3a881 Content-Type: application/octet-stream; name="11nnexttbtt_fix_and_hal_func_relocate3.diff" Content-Disposition: attachment; filename="11nnexttbtt_fix_and_hal_func_relocate3.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_grxda0960 SW5kZXg6IGlmX2F0aHZhci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGlmX2F0aHZhci5oCShyZXZpc2lvbiAy MjUyNDIpCisrKyBpZl9hdGh2YXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgyLDYgKzQ4Miw4IEBA CiAJKCgqKF9haCktPmFoX3NldEJlYWNvblRpbWVycykoKF9haCksIChfYnQpKSkKICNkZWZpbmUJ YXRoX2hhbF9iZWFjb250aW1lcnMoX2FoLCBfYnMpIFwKIAkoKCooX2FoKS0+YWhfc2V0U3RhdGlv bkJlYWNvblRpbWVycykoKF9haCksIChfYnMpKSkKKyNkZWZpbmUgYXRoX2hhbF9nZXRuZXh0dGJ0 dChfYWgpIFwKKwkoKCooX2FoKS0+YWhfZ2V0TmV4dFRCVFQpKChfYWgpKSkKICNkZWZpbmUJYXRo X2hhbF9zZXRhc3NvY2lkKF9haCwgX2JzcywgX2Fzc29jaWQpIFwKIAkoKCooX2FoKS0+YWhfd3Jp dGVBc3NvY2lkKSgoX2FoKSwgKF9ic3MpLCAoX2Fzc29jaWQpKSkKICNkZWZpbmUJYXRoX2hhbF9w aHlkaXNhYmxlKF9haCkgXApJbmRleDogYXRoX2hhbC9hcjU0MTYvYXI1NDE2X2F0dGFjaC5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1NDE2L2FyNTQxNl9hdHRhY2guYwkocmV2aXNpb24gMjI1 MjQyKQorKysgYXRoX2hhbC9hcjU0MTYvYXI1NDE2X2F0dGFjaC5jCSh3b3JraW5nIGNvcHkpCkBA IC0xMzYsNiArMTM2LDcgQEAKIAlhaC0+YWhfZ3Bpb0dldAkJCT0gYXI1NDE2R3Bpb0dldDsKIAlh aC0+YWhfZ3Bpb1NldAkJCT0gYXI1NDE2R3Bpb1NldDsKIAlhaC0+YWhfZ3Bpb1NldEludHIJCT0g YXI1NDE2R3Bpb1NldEludHI7CisJYWgtPmFoX2dldFRzZjY0CQkJPSBhcjU0MTZHZXRUc2Y2NDsK IAlhaC0+YWhfcmVzZXRUc2YJCQk9IGFyNTQxNlJlc2V0VHNmOwogCWFoLT5haF9nZXRSZkdhaW4J CT0gYXI1NDE2R2V0UmZnYWluOwogCWFoLT5haF9zZXRBbnRlbm5hU3dpdGNoCQk9IGFyNTQxNlNl dEFudGVubmFTd2l0Y2g7CkBAIC0xNjAsNiArMTYxLDcgQEAKIAlhaC0+YWhfYmVhY29uSW5pdAkJ PSBhcjU0MTZCZWFjb25Jbml0OwogCWFoLT5haF9zZXRTdGF0aW9uQmVhY29uVGltZXJzCT0gYXI1 NDE2U2V0U3RhQmVhY29uVGltZXJzOwogCWFoLT5haF9yZXNldFN0YXRpb25CZWFjb25UaW1lcnMJ PSBhcjU0MTZSZXNldFN0YUJlYWNvblRpbWVyczsKKwlhaC0+YWhfZ2V0TmV4dFRCVFQJCT0gYXI1 NDE2R2V0TmV4dFRCVFQ7CiAKIAkvKiA4MDIuMTFuIEZ1bmN0aW9ucyAqLwogCWFoLT5haF9jaGFp blR4RGVzYwkJPSBhcjU0MTZDaGFpblR4RGVzYzsKSW5kZXg6IGF0aF9oYWwvYXI1NDE2L2FyNTQx Nl9yZXNldC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1NDE2L2FyNTQxNl9yZXNldC5jCShy ZXZpc2lvbiAyMjUyNDIpCisrKyBhdGhfaGFsL2FyNTQxNi9hcjU0MTZfcmVzZXQuYwkod29ya2lu ZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBACiAJLyogRm9yIGNoaXBzIG9uIHdoaWNoIHRoZSBS VEMgcmVzZXQgaXMgZG9uZSwgc2F2ZSBUU0YgYmVmb3JlIGl0IGdldHMgY2xlYXJlZCAqLwogCWlm IChBUl9TUkVWX0hPV0woYWgpIHx8CiAJICAgIChBUl9TUkVWX01FUkxJTihhaCkgJiYgYXRoX2hh bF9lZXByb21HZXRGbGFnKGFoLCBBUl9FRVBfT0xfUFdSQ1RSTCkpKQotCQl0c2YgPSBhcjUyMTJH ZXRUc2Y2NChhaCk7CisJCXRzZiA9IGFyNTQxNkdldFRzZjY0KGFoKTsKIAogCS8qIE1hcmsgUEhZ IGFzIGluYWN0aXZlOyBtYXJrZWQgYWN0aXZlIGluIGFyNTQxNkluaXRCQigpICovCiAJYXI1NDE2 TWFya1BoeUluYWN0aXZlKGFoKTsKQEAgLTE1OSw3ICsxNTksNyBAQAogCiAJLyogUmVzdG9yZSBU U0YgKi8KIAlpZiAodHNmKQotCQlhcjUyMTJTZXRUc2Y2NChhaCwgdHNmKTsKKwkJYXI1NDE2U2V0 VHNmNjQoYWgsIHRzZik7CiAKIAlPU19NQVJLKGFoLCBBSF9NQVJLX1JFU0VUX0xJTkUsIF9fTElO RV9fKTsKIAlpZiAoQVJfU1JFVl9NRVJMSU5fMTBfT1JfTEFURVIoYWgpKQpAQCAtMTkyLDkgKzE5 Miw5IEBACiAJICogdmFsdWUgYWZ0ZXIgdGhlIGluaXR2YWxzIGhhdmUgYmVlbiBhcHBsaWVkLCB3 aXRoIGFuIG9mZnNldAogCSAqIGJhc2VkIG9uIG1lYXN1cmVkIHRpbWUgZGlmZmVyZW5jZQogCSAq LwotCWlmIChBUl9TUkVWX0hPV0woYWgpICYmIChhcjUyMTJHZXRUc2Y2NChhaCkgPCB0c2YpKSB7 CisJaWYgKEFSX1NSRVZfSE9XTChhaCkgJiYgKGFyNTQxNkdldFRzZjY0KGFoKSA8IHRzZikpIHsK IAkJdHNmICs9IDE1MDA7Ci0JCWFyNTIxMlNldFRzZjY0KGFoLCB0c2YpOworCQlhcjU0MTZTZXRU c2Y2NChhaCwgdHNmKTsKIAl9CiAKIAlIQUxERUJVRyhhaCwgSEFMX0RFQlVHX1JFU0VULCAiPj4+ MiAlczogQVJfUEhZX0RBR19DVFJMQ0NLPTB4JXhcbiIsCkBAIC01MDMsNyArNTAzLDcgQEAKIAkJ Y2hhbi0+aWNfc3RhdGUgJj0gfklFRUU4MDIxMV9DSEFOU1RBVEVfQ1dJTlQ7CiAKIAlpY2hhbi0+ Y2hhbm5lbF90aW1lID0gMDsKLQlpY2hhbi0+dHNmX2xhc3QgPSBhcjUyMTJHZXRUc2Y2NChhaCk7 CisJaWNoYW4tPnRzZl9sYXN0ID0gYXI1NDE2R2V0VHNmNjQoYWgpOwogCWFyNTIxMlR4RW5hYmxl KGFoLCBBSF9UUlVFKTsKIAlyZXR1cm4gQUhfVFJVRTsKIH0KSW5kZXg6IGF0aF9oYWwvYXI1NDE2 L2FyNTQxNi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1NDE2L2FyNTQxNi5oCShyZXZpc2lv biAyMjUyNDIpCisrKyBhdGhfaGFsL2FyNTQxNi9hcjU0MTYuaAkod29ya2luZyBjb3B5KQpAQCAt MTY5LDYgKzE2OSw3IEBACiBleHRlcm4Jdm9pZCBhcjU0MTZSZXNldFN0YUJlYWNvblRpbWVycyhz dHJ1Y3QgYXRoX2hhbCAqYWgpOwogZXh0ZXJuCXZvaWQgYXI1NDE2U2V0U3RhQmVhY29uVGltZXJz KHN0cnVjdCBhdGhfaGFsICphaCwKIAkJY29uc3QgSEFMX0JFQUNPTl9TVEFURSAqKTsKK2V4dGVy bgl1aW50NjRfdCBhcjU0MTZHZXROZXh0VEJUVChzdHJ1Y3QgYXRoX2hhbCAqKTsKIAogZXh0ZXJu CUhBTF9CT09MIGFyNTQxNkVlcHJvbVJlYWQoc3RydWN0IGF0aF9oYWwgKiwgdV9pbnQgb2ZmLCB1 aW50MTZfdCAqZGF0YSk7CiBleHRlcm4JSEFMX0JPT0wgYXI1NDE2RWVwcm9tV3JpdGUoc3RydWN0 IGF0aF9oYWwgKiwgdV9pbnQgb2ZmLCB1aW50MTZfdCBkYXRhKTsKQEAgLTE4Niw2ICsxODcsOCBA QAogCiBleHRlcm4JdV9pbnQgYXI1NDE2R2V0V2lyZWxlc3NNb2RlcyhzdHJ1Y3QgYXRoX2hhbCAq YWgpOwogZXh0ZXJuCXZvaWQgYXI1NDE2U2V0TGVkU3RhdGUoc3RydWN0IGF0aF9oYWwgKmFoLCBI QUxfTEVEX1NUQVRFIHN0YXRlKTsKK2V4dGVybgl1aW50NjRfdCBhcjU0MTZHZXRUc2Y2NChzdHJ1 Y3QgYXRoX2hhbCAqYWgpOworZXh0ZXJuCXZvaWQgYXI1NDE2U2V0VHNmNjQoc3RydWN0IGF0aF9o YWwgKmFoLCB1aW50NjRfdCB0c2Y2NCk7CiBleHRlcm4Jdm9pZCBhcjU0MTZSZXNldFRzZihzdHJ1 Y3QgYXRoX2hhbCAqYWgpOwogZXh0ZXJuCUhBTF9CT09MIGFyNTQxNlNldEFudGVubmFTd2l0Y2go c3RydWN0IGF0aF9oYWwgKiwgSEFMX0FOVF9TRVRUSU5HKTsKIGV4dGVybglIQUxfQk9PTCBhcjU0 MTZTZXREZWNvbXBNYXNrKHN0cnVjdCBhdGhfaGFsICosIHVpbnQxNl90LCBpbnQpOwpJbmRleDog YXRoX2hhbC9hcjU0MTYvYXI1NDE2X2JlYWNvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1 NDE2L2FyNTQxNl9iZWFjb24uYwkocmV2aXNpb24gMjI1MjQyKQorKysgYXRoX2hhbC9hcjU0MTYv YXI1NDE2X2JlYWNvbi5jCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxNSBAQAogI2RlZmlu ZQlPTkVfRUlHSFRIX1RVX1RPX1VTRUMoX3R1OCkJKChfdHU4KSA8PCA3KQogCiAvKgorICogUmV0 dXJuIHRoZSBoYXJkd2FyZSBOZXh0VEJUVCBpbiBUU0YKKyAqLwordWludDY0X3QKK2FyNTQxNkdl dE5leHRUQlRUKHN0cnVjdCBhdGhfaGFsICphaCkKK3sKKwlyZXR1cm4gT1NfUkVHX1JFQUQoYWgs IEFSX05FWFRfVEJUVCk7Cit9CisKKy8qCiAgKiBJbml0aWFsaXplIGFsbCBvZiB0aGUgaGFyZHdh cmUgcmVnaXN0ZXJzIHVzZWQgdG8KICAqIHNlbmQgYmVhY29ucy4gIE5vdGUgdGhhdCBmb3Igc3Rh dGlvbiBvcGVyYXRpb24gdGhlCiAgKiBkcml2ZXIgY2FsbHMgYXI1NDE2U2V0U3RhQmVhY29uVGlt ZXJzIGluc3RlYWQuCkluZGV4OiBhdGhfaGFsL2FyNTQxNi9hcjU0MTZfbWlzYy5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGF0aF9oYWwvYXI1NDE2L2FyNTQxNl9taXNjLmMJKHJldmlzaW9uIDIyNTI0MikKKysr IGF0aF9oYWwvYXI1NDE2L2FyNTQxNl9taXNjLmMJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkz LDQxIEBACiB9CiAKIC8qCisgKiBHZXQgdGhlIGN1cnJlbnQgaGFyZHdhcmUgdHNmIGZvciBzdGFt bG1lCisgKi8KK3VpbnQ2NF90CithcjU0MTZHZXRUc2Y2NChzdHJ1Y3QgYXRoX2hhbCAqYWgpCit7 CisJdWludDMyX3QgbG93MSwgbG93MiwgdTMyOworCisJLyogc3luYyBtdWx0aS13b3JkIHJlYWQg Ki8KKwlsb3cxID0gT1NfUkVHX1JFQUQoYWgsIEFSX1RTRl9MMzIpOworCXUzMiA9IE9TX1JFR19S RUFEKGFoLCBBUl9UU0ZfVTMyKTsKKwlsb3cyID0gT1NfUkVHX1JFQUQoYWgsIEFSX1RTRl9MMzIp OworCWlmIChsb3cyIDwgbG93MSkgewkvKiByb2xsIG92ZXIgKi8KKwkJLyoKKwkJICogSWYgd2Ug YXJlIG5vdCBwcmVlbXB0ZWQgdGhpcyB3aWxsIHdvcmsuICBJZiB3ZSBhcmUKKwkJICogdGhlbiB3 ZSByZS1yZWFkaW5nIEFSX1RTRl9VMzIgZG9lcyBubyBnb29kIGFzIHRoZQorCQkgKiBsb3cgYml0 cyB3aWxsIGJlIG1lYW5pbmdsZXNzLiAgTGlrZXdpc2UgcmVhZGluZworCQkgKiBMMzIsIFUzMiwg VTMyLCB0aGVuIGNvbXBhcmluZyB0aGUgbGFzdCB0d28gcmVhZHMKKwkJICogdG8gY2hlY2sgZm9y IHJvbGxvdmVyIGRvZXNuJ3QgaGVscCBpZiBwcmVlbXB0ZWQtLXNvCisJCSAqIHdlIHRha2UgdGhp cyBhcHByb2FjaCBhcyBpdCBjb3N0cyBvbmUgbGVzcyBQQ0kgcmVhZAorCQkgKiB3aGljaCBjYW4g YmUgbm90aWNlYWJsZSB3aGVuIGRvaW5nIHRoaW5ncyBsaWtlCisJCSAqIHRpbWVzdGFtcGluZyBw YWNrZXRzIGluIG1vbml0b3IgbW9kZS4KKwkJICovCisJCXUzMisrOworCX0KKwlyZXR1cm4gKCgo dWludDY0X3QpIHUzMikgPDwgMzIpIHwgKCh1aW50NjRfdCkgbG93Mik7Cit9CisKK3ZvaWQKK2Fy NTQxNlNldFRzZjY0KHN0cnVjdCBhdGhfaGFsICphaCwgdWludDY0X3QgdHNmNjQpCit7CisJT1Nf UkVHX1dSSVRFKGFoLCBBUl9UU0ZfTDMyLCB0c2Y2NCAmIDB4ZmZmZmZmZmYpOworCU9TX1JFR19X UklURShhaCwgQVJfVFNGX1UzMiwgKHRzZjY0ID4+IDMyKSAmIDB4ZmZmZmZmZmYpOworfQorCisv KgogICogUmVzZXQgdGhlIGN1cnJlbnQgaGFyZHdhcmUgdHNmIGZvciBzdGFtbG1lLgogICovCiB2 b2lkCkluZGV4OiBhdGhfaGFsL2FoLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYXRoX2hhbC9haC5jCShyZXZp c2lvbiAyMjUyNDIpCisrKyBhdGhfaGFsL2FoLmMJKHdvcmtpbmcgY29weSkKQEAgLTEyMjIsMyAr MTIyMiwzNyBAQAogICAgIH0KICAgICByZXR1cm4gcnY7CiB9CisKKy8qCisgKiBBZGp1c3QgdGhl IFRTRi4KKyAqLwordm9pZAorYXRoX2hhbF9hZGp1c3R0c2Yoc3RydWN0IGF0aF9oYWwgKmFoLCBp bnQzMl90IHRzZmRlbHRhKQoreworCS8qIFhYWCBoYW5kbGUgd3JhcC9vdmVyZmxvdyAqLworCU9T X1JFR19XUklURShhaCwgQVJfVFNGX0wzMiwgT1NfUkVHX1JFQUQoYWgsIEFSX1RTRl9MMzIpICsg dHNmZGVsdGEpOworfQorCisvKgorICogRW5hYmxlIG9yIGRpc2FibGUgQ0NBLgorICovCit2b2lk CithdGhfaGFsX3NldGNjYShzdHJ1Y3QgYXRoX2hhbCAqYWgsIGludCBlbmEpCit7CisJLyoKKwkg KiBOQjogZmlsbCBtZSBpbjsgdGhpcyBpcyBub3QgcHJvdmlkZWQgYnkgZGVmYXVsdCBiZWNhdXNl IGRpc2FibGluZworCSAqICAgICBDQ0EgaW4gbW9zdCBsb2NhbGVzIHZpb2xhdGVzIHJlZ3VsYXRv cnkuCisJICovCit9CisKKy8qCisgKiBHZXQgQ0NBIHNldHRpbmcuCisgKi8KK2ludAorYXRoX2hh bF9nZXRjY2Eoc3RydWN0IGF0aF9oYWwgKmFoKQoreworCXVfaW50MzJfdCBkaWFnOworCWlmIChh dGhfaGFsX2dldGNhcGFiaWxpdHkoYWgsIEhBTF9DQVBfRElBRywgMCwgJmRpYWcpICE9IEhBTF9P SykKKwkJcmV0dXJuIDE7CisJcmV0dXJuICgoZGlhZyAmIDB4NTAwMDAwKSA9PSAwKTsKK30KSW5k ZXg6IGF0aF9oYWwvYXI1MjEwL2FyNTIxMF9hdHRhY2guYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhdGhfaGFs L2FyNTIxMC9hcjUyMTBfYXR0YWNoLmMJKHJldmlzaW9uIDIyNTI0MikKKysrIGF0aF9oYWwvYXI1 MjEwL2FyNTIxMF9hdHRhY2guYwkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCw3IEBACiAJ LmFoX2JlYWNvbkluaXQJCQk9IGFyNTIxMEJlYWNvbkluaXQsCiAJLmFoX3NldFN0YXRpb25CZWFj b25UaW1lcnMJPSBhcjUyMTBTZXRTdGFCZWFjb25UaW1lcnMsCiAJLmFoX3Jlc2V0U3RhdGlvbkJl YWNvblRpbWVycwk9IGFyNTIxMFJlc2V0U3RhQmVhY29uVGltZXJzLAorCS5haF9nZXROZXh0VEJU VAkJCT0gYXI1MjEwR2V0TmV4dFRCVFQsCiAKIAkvKiBJbnRlcnJ1cHQgRnVuY3Rpb25zICovCiAJ LmFoX2lzSW50ZXJydXB0UGVuZGluZwkJPSBhcjUyMTBJc0ludGVycnVwdFBlbmRpbmcsCkluZGV4 OiBhdGhfaGFsL2FyNTIxMC9hcjUyMTAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhdGhfaGFsL2FyNTIxMC9h cjUyMTAuaAkocmV2aXNpb24gMjI1MjQyKQorKysgYXRoX2hhbC9hcjUyMTAvYXI1MjEwLmgJKHdv cmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsNyBAQAogZXh0ZXJuCXZvaWQgYXI1MjEwU2V0U3Rh QmVhY29uVGltZXJzKHN0cnVjdCBhdGhfaGFsICosCiAJCWNvbnN0IEhBTF9CRUFDT05fU1RBVEUg Kik7CiBleHRlcm4Jdm9pZCBhcjUyMTBSZXNldFN0YUJlYWNvblRpbWVycyhzdHJ1Y3QgYXRoX2hh bCAqKTsKK2V4dGVybgl1aW50NjRfdCBhcjUyMTBHZXROZXh0VEJUVChzdHJ1Y3QgYXRoX2hhbCAq KTsKIAogZXh0ZXJuCUhBTF9CT09MIGFyNTIxMElzSW50ZXJydXB0UGVuZGluZyhzdHJ1Y3QgYXRo X2hhbCAqKTsKIGV4dGVybglIQUxfQk9PTCBhcjUyMTBHZXRQZW5kaW5nSW50ZXJydXB0cyhzdHJ1 Y3QgYXRoX2hhbCAqLCBIQUxfSU5UICopOwpJbmRleDogYXRoX2hhbC9hcjUyMTAvYXI1MjEwX2Jl YWNvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1MjEwL2FyNTIxMF9iZWFjb24uYwkocmV2 aXNpb24gMjI1MjQyKQorKysgYXRoX2hhbC9hcjUyMTAvYXI1MjEwX2JlYWNvbi5jCSh3b3JraW5n IGNvcHkpCkBAIC0yNyw2ICsyNywxNyBAQAogI2luY2x1ZGUgImFyNTIxMC9hcjUyMTBkZXNjLmgi CiAKIC8qCisgKiBSZXR1cm4gdGhlIGhhcmR3YXJlIE5leHRUQlRUIGluIFRTRgorICovCit1aW50 NjRfdAorYXI1MjEwR2V0TmV4dFRCVFQoc3RydWN0IGF0aF9oYWwgKmFoKQoreworI2RlZmluZSBU VV9UT19UU0YoX3R1KQkoKCh1aW50NjRfdCkoX3R1KSkgPDwgMTApCisJcmV0dXJuIFRVX1RPX1RT RihPU19SRUdfUkVBRChhaCwgQVJfVElNRVIwKSk7CisjdW5kZWYgVFVfVE9fVFNGCit9CisKKy8q CiAgKiBJbml0aWFsaXplIGFsbCBvZiB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIHVzZWQgdG8gc2Vu ZCBiZWFjb25zLgogICovCiB2b2lkCkluZGV4OiBhdGhfaGFsL2FyNTIxMS9hcjUyMTFfYXR0YWNo LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gYXRoX2hhbC9hcjUyMTEvYXI1MjExX2F0dGFjaC5jCShyZXZpc2lv biAyMjUyNDIpCisrKyBhdGhfaGFsL2FyNTIxMS9hcjUyMTFfYXR0YWNoLmMJKHdvcmtpbmcgY29w eSkKQEAgLTE0OCw2ICsxNDgsNyBAQAogCS5haF9iZWFjb25Jbml0CQkJPSBhcjUyMTFCZWFjb25J bml0LAogCS5haF9zZXRTdGF0aW9uQmVhY29uVGltZXJzCT0gYXI1MjExU2V0U3RhQmVhY29uVGlt ZXJzLAogCS5haF9yZXNldFN0YXRpb25CZWFjb25UaW1lcnMJPSBhcjUyMTFSZXNldFN0YUJlYWNv blRpbWVycywKKwkuYWhfZ2V0TmV4dFRCVFQJCQk9IGFyNTIxMUdldE5leHRUQlRULAogCiAJLyog SW50ZXJydXB0IEZ1bmN0aW9ucyAqLwogCS5haF9pc0ludGVycnVwdFBlbmRpbmcJCT0gYXI1MjEx SXNJbnRlcnJ1cHRQZW5kaW5nLApJbmRleDogYXRoX2hhbC9hcjUyMTEvYXI1MjExLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gYXRoX2hhbC9hcjUyMTEvYXI1MjExLmgJKHJldmlzaW9uIDIyNTI0MikKKysrIGF0 aF9oYWwvYXI1MjExL2FyNTIxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsNiArMjk2LDcgQEAK IGV4dGVybgl2b2lkIGFyNTIxMVNldFN0YUJlYWNvblRpbWVycyhzdHJ1Y3QgYXRoX2hhbCAqLAog CQljb25zdCBIQUxfQkVBQ09OX1NUQVRFICopOwogZXh0ZXJuCXZvaWQgYXI1MjExUmVzZXRTdGFC ZWFjb25UaW1lcnMoc3RydWN0IGF0aF9oYWwgKik7CitleHRlcm4JdWludDY0X3QgYXI1MjExR2V0 TmV4dFRCVFQoc3RydWN0IGF0aF9oYWwgKik7CiAKIGV4dGVybglIQUxfQk9PTCBhcjUyMTFJc0lu dGVycnVwdFBlbmRpbmcoc3RydWN0IGF0aF9oYWwgKik7CiBleHRlcm4JSEFMX0JPT0wgYXI1MjEx R2V0UGVuZGluZ0ludGVycnVwdHMoc3RydWN0IGF0aF9oYWwgKiwgSEFMX0lOVCAqKTsKSW5kZXg6 IGF0aF9oYWwvYXI1MjExL2FyNTIxMV9iZWFjb24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhdGhfaGFsL2Fy NTIxMS9hcjUyMTFfYmVhY29uLmMJKHJldmlzaW9uIDIyNTI0MikKKysrIGF0aF9oYWwvYXI1MjEx L2FyNTIxMV9iZWFjb24uYwkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMTcgQEAKICAqLwog CiAvKgorICogUmV0dXJuIHRoZSBoYXJkd2FyZSBOZXh0VEJUVCBpbiBUU0YKKyAqLwordWludDY0 X3QKK2FyNTIxMUdldE5leHRUQlRUKHN0cnVjdCBhdGhfaGFsICphaCkKK3sKKyNkZWZpbmUgVFVf VE9fVFNGKF90dSkJKCgodWludDY0X3QpKF90dSkpIDw8IDEwKQorCXJldHVybiBUVV9UT19UU0Yo T1NfUkVHX1JFQUQoYWgsIEFSX1RJTUVSMCkpOworI3VuZGVmIFRVX1RPX1RTRgorfQorCisvKgog ICogSW5pdGlhbGl6ZSBhbGwgb2YgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyB1c2VkIHRvIHNlbmQg YmVhY29ucy4KICAqLwogdm9pZApJbmRleDogYXRoX2hhbC9hcjUyMTIvYXI1MjEyX2F0dGFjaC5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1MjEyL2FyNTIxMl9hdHRhY2guYwkocmV2aXNpb24g MjI1MjQyKQorKysgYXRoX2hhbC9hcjUyMTIvYXI1MjEyX2F0dGFjaC5jCSh3b3JraW5nIGNvcHkp CkBAIC0xNTEsNiArMTUxLDcgQEAKIAkuYWhfYmVhY29uSW5pdAkJCT0gYXI1MjEyQmVhY29uSW5p dCwKIAkuYWhfc2V0U3RhdGlvbkJlYWNvblRpbWVycwk9IGFyNTIxMlNldFN0YUJlYWNvblRpbWVy cywKIAkuYWhfcmVzZXRTdGF0aW9uQmVhY29uVGltZXJzCT0gYXI1MjEyUmVzZXRTdGFCZWFjb25U aW1lcnMsCisJLmFoX2dldE5leHRUQlRUCQkJPSBhcjUyMTJHZXROZXh0VEJUVCwKIAogCS8qIElu dGVycnVwdCBGdW5jdGlvbnMgKi8KIAkuYWhfaXNJbnRlcnJ1cHRQZW5kaW5nCQk9IGFyNTIxMklz SW50ZXJydXB0UGVuZGluZywKSW5kZXg6IGF0aF9oYWwvYXI1MjEyL2FyNTIxMi5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGF0aF9oYWwvYXI1MjEyL2FyNTIxMi5oCShyZXZpc2lvbiAyMjUyNDIpCisrKyBhdGhf aGFsL2FyNTIxMi9hcjUyMTIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDYgKzQzMCw3IEBACiBl eHRlcm4Jdm9pZCBhcjUyMTJSZXNldFN0YUJlYWNvblRpbWVycyhzdHJ1Y3QgYXRoX2hhbCAqYWgp OwogZXh0ZXJuCXZvaWQgYXI1MjEyU2V0U3RhQmVhY29uVGltZXJzKHN0cnVjdCBhdGhfaGFsICph aCwKIAkJY29uc3QgSEFMX0JFQUNPTl9TVEFURSAqKTsKK2V4dGVybgl1aW50NjRfdCBhcjUyMTJH ZXROZXh0VEJUVChzdHJ1Y3QgYXRoX2hhbCAqKTsKIAogZXh0ZXJuCUhBTF9CT09MIGFyNTIxMklz SW50ZXJydXB0UGVuZGluZyhzdHJ1Y3QgYXRoX2hhbCAqYWgpOwogZXh0ZXJuCUhBTF9CT09MIGFy NTIxMkdldFBlbmRpbmdJbnRlcnJ1cHRzKHN0cnVjdCBhdGhfaGFsICphaCwgSEFMX0lOVCAqKTsK SW5kZXg6IGF0aF9oYWwvYXI1MjEyL2FyNTIxMl9iZWFjb24uYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhdGhf aGFsL2FyNTIxMi9hcjUyMTJfYmVhY29uLmMJKHJldmlzaW9uIDIyNTI0MikKKysrIGF0aF9oYWwv YXI1MjEyL2FyNTIxMl9iZWFjb24uYwkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTcgQEAK ICNpbmNsdWRlICJhcjUyMTIvYXI1MjEyZGVzYy5oIgogCiAvKgorICogUmV0dXJuIHRoZSBoYXJk d2FyZSBOZXh0VEJUVCBpbiBUU0YKKyAqLwordWludDY0X3QKK2FyNTIxMkdldE5leHRUQlRUKHN0 cnVjdCBhdGhfaGFsICphaCkKK3sKKyNkZWZpbmUgVFVfVE9fVFNGKF90dSkJKCgodWludDY0X3Qp KF90dSkpIDw8IDEwKQorCXJldHVybiBUVV9UT19UU0YoT1NfUkVHX1JFQUQoYWgsIEFSX1RJTUVS MCkpOworI3VuZGVmIFRVX1RPX1RTRgorfQorCisvKgogICogSW5pdGlhbGl6ZSBhbGwgb2YgdGhl IGhhcmR3YXJlIHJlZ2lzdGVycyB1c2VkIHRvCiAgKiBzZW5kIGJlYWNvbnMuICBOb3RlIHRoYXQg Zm9yIHN0YXRpb24gb3BlcmF0aW9uIHRoZQogICogZHJpdmVyIGNhbGxzIGFyNTIxMlNldFN0YUJl YWNvblRpbWVycyBpbnN0ZWFkLgpJbmRleDogYXRoX2hhbC9haC5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGF0 aF9oYWwvYWguaAkocmV2aXNpb24gMjI1MjQyKQorKysgYXRoX2hhbC9haC5oCSh3b3JraW5nIGNv cHkpCkBAIC05OTYsNiArOTk2LDcgQEAKIAl2b2lkCSAgX19haGRlY2woKmFoX3NldFN0YXRpb25C ZWFjb25UaW1lcnMpKHN0cnVjdCBhdGhfaGFsKiwKIAkJCQljb25zdCBIQUxfQkVBQ09OX1NUQVRF ICopOwogCXZvaWQJICBfX2FoZGVjbCgqYWhfcmVzZXRTdGF0aW9uQmVhY29uVGltZXJzKShzdHJ1 Y3QgYXRoX2hhbCopOworCXVpbnQ2NF90ICBfX2FoZGVjbCgqYWhfZ2V0TmV4dFRCVFQpKHN0cnVj dCBhdGhfaGFsICopOwogCiAJLyogODAyLjExbiBGdW5jdGlvbnMgKi8KIAlIQUxfQk9PTCAgX19h aGRlY2woKmFoX2NoYWluVHhEZXNjKShzdHJ1Y3QgYXRoX2hhbCAqLApAQCAtMTEzOCw0ICsxMTM5 LDIwIEBACiBleHRlcm4gdWludDE2X3QgX19haGRlY2wgYXRoX2hhbF9jb21wdXRldHh0aW1lKHN0 cnVjdCBhdGhfaGFsICosCiAJCWNvbnN0IEhBTF9SQVRFX1RBQkxFICpyYXRlcywgdWludDMyX3Qg ZnJhbWVMZW4sCiAJCXVpbnQxNl90IHJhdGVpeCwgSEFMX0JPT0wgc2hvcnRQcmVhbWJsZSk7CisK Ky8qCisgKiBBZGp1c3QgdGhlIFRTRi4KKyAqLworZXh0ZXJuIHZvaWQgX19haGRlY2wgYXRoX2hh bF9hZGp1c3R0c2Yoc3RydWN0IGF0aF9oYWwgKmFoLCBpbnQzMl90IHRzZmRlbHRhKTsKKworLyoK KyAqIEVuYWJsZSBvciBkaXNhYmxlIENDQS4KKyAqLwordm9pZCBfX2FoZGVjbCBhdGhfaGFsX3Nl dGNjYShzdHJ1Y3QgYXRoX2hhbCAqYWgsIGludCBlbmEpOworCisvKgorICogR2V0IENDQSBzZXR0 aW5nLgorICovCitpbnQgX19haGRlY2wgYXRoX2hhbF9nZXRjY2Eoc3RydWN0IGF0aF9oYWwgKmFo KTsKKwogI2VuZGlmIC8qIF9BVEhfQUhfSF8gKi8KSW5kZXg6IGlmX2F0aC5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGlmX2F0aC5jCShyZXZpc2lvbiAyMjUyNDIpCisrKyBpZl9hdGguYwkod29ya2luZyBjb3B5 KQpAQCAtMjE0LDI0ICsyMTQsNiBAQAogc3RhdGljIHZvaWQJYXRoX3RkbWFfYmVhY29uX3NlbmQo c3RydWN0IGF0aF9zb2Z0YyAqc2MsCiAJCSAgICBzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXApOwog Ci1zdGF0aWMgX19pbmxpbmUgdm9pZAotYXRoX2hhbF9zZXRjY2Eoc3RydWN0IGF0aF9oYWwgKmFo LCBpbnQgZW5hKQotewotCS8qCi0JICogTkI6IGZpbGwgbWUgaW47IHRoaXMgaXMgbm90IHByb3Zp ZGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBkaXNhYmxpbmcKLQkgKiAgICAgQ0NBIGluIG1vc3QgbG9j YWxlcyB2aW9sYXRlcyByZWd1bGF0b3J5LgotCSAqLwotfQotCi1zdGF0aWMgX19pbmxpbmUgaW50 Ci1hdGhfaGFsX2dldGNjYShzdHJ1Y3QgYXRoX2hhbCAqYWgpCi17Ci0JdV9pbnQzMl90IGRpYWc7 Ci0JaWYgKGF0aF9oYWxfZ2V0Y2FwYWJpbGl0eShhaCwgSEFMX0NBUF9ESUFHLCAwLCAmZGlhZykg IT0gSEFMX09LKQotCQlyZXR1cm4gMTsKLQlyZXR1cm4gKChkaWFnICYgMHg1MDAwMDApID09IDAp OwotfQotCiAjZGVmaW5lCVRETUFfRVBfTVVMVElQTElFUgkoMTw8MTApIC8qIHBvdzIgdG8gb3B0 aW1pemUgb3V0ICogYW5kIC8gKi8KICNkZWZpbmUJVERNQV9MUEZfTEVOCQk2CiAjZGVmaW5lCVRE TUFfRFVNTVlfTUFSS0VSCTB4MTI3CkBAIC01NDYwLDIwICs1NDQyLDYgQEAKIH0KIAogI2lmZGVm IElFRUU4MDIxMV9TVVBQT1JUX1RETUEKLXN0YXRpYyBfX2lubGluZSB1aW50MzJfdAotYXRoX2hh bF9nZXRuZXh0dGJ0dChzdHJ1Y3QgYXRoX2hhbCAqYWgpCi17Ci0jZGVmaW5lCUFSX1RJTUVSMAkw eDgwMjgKLQlyZXR1cm4gT1NfUkVHX1JFQUQoYWgsIEFSX1RJTUVSMCk7Ci19Ci0KLXN0YXRpYyBf X2lubGluZSB2b2lkCi1hdGhfaGFsX2FkanVzdHRzZihzdHJ1Y3QgYXRoX2hhbCAqYWgsIGludDMy X3QgdHNmZGVsdGEpCi17Ci0JLyogWFhYIGhhbmRsZSB3cmFwL292ZXJmbG93ICovCi0JT1NfUkVH X1dSSVRFKGFoLCBBUl9UU0ZfTDMyLCBPU19SRUdfUkVBRChhaCwgQVJfVFNGX0wzMikgKyB0c2Zk ZWx0YSk7Ci19Ci0KIHN0YXRpYyB2b2lkCiBhdGhfdGRtYV9zZXR0aW1lcnMoc3RydWN0IGF0aF9z b2Z0YyAqc2MsIHVfaW50MzJfdCBuZXh0dGJ0dCwgdV9pbnQzMl90IGJpbnR2YWwpCiB7CkBAIC01 NjI5LDggKzU1OTcsOCBAQAogCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gaWMtPmljX2lmcC0+aWZf c29mdGM7CiAJc3RydWN0IGF0aF9oYWwgKmFoID0gc2MtPnNjX2FoOwogCWNvbnN0IEhBTF9SQVRF X1RBQkxFICpydCA9IHNjLT5zY19jdXJyYXRlczsKLQl1X2ludDY0X3QgdHNmLCByc3RhbXAsIG5l eHRzbG90OwotCXVfaW50MzJfdCB0eHRpbWUsIG5leHRzbG90dHUsIHRpbWVyMDsKKwl1X2ludDY0 X3QgdHNmLCByc3RhbXAsIG5leHRzbG90LCBuZXh0dGJ0dDsKKwl1X2ludDMyX3QgdHh0aW1lLCBu ZXh0c2xvdHR1OwogCWludDMyX3QgdHVkZWx0YSwgdHNmZGVsdGE7CiAJY29uc3Qgc3RydWN0IGF0 aF9yeF9zdGF0dXMgKnJzOwogCWludCByaXg7CkBAIC01Njc3LDE1ICs1NjQ1LDE1IEBACiAJbmV4 dHNsb3R0dSA9IFRTRl9UT19UVShuZXh0c2xvdD4+MzIsIG5leHRzbG90KSAmIEhBTF9CRUFDT05f UEVSSU9EOwogCiAJLyoKLQkgKiBUSU1FUjAgaXMgdGhlIGgvdydzIGlkZWEgb2YgTmV4dFRCVFQg KGluIFRVJ3MpLiAgQ29udmVydAotCSAqIHRvIHVzZWNzIGFuZCBjYWxjdWxhdGUgdGhlIGRpZmZl cmVuY2UgYmV0d2VlbiB3aGF0IHRoZQorCSAqIFJldHJpZXZlIHRoZSBoYXJkd2FyZSBOZXh0VEJU VCBpbiB1c2VjcworCSAqIGFuZCBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB3aGF0 IHRoZQogCSAqIG90aGVyIHN0YXRpb24gdGhpbmtzIGFuZCB3aGF0IHdlIGhhdmUgcHJvZ3JhbW1l ZC4gIFRoaXMKIAkgKiBsZXRzIHVzIGZpZ3VyZSBob3cgdG8gYWRqdXN0IG91ciB0aW1lcnMgdG8g bWF0Y2guICBUaGUKIAkgKiBhZGp1c3RtZW50cyBhcmUgZG9uZSBieSBwdWxsaW5nIHRoZSBUU0Yg Zm9yd2FyZCBhbmQgcG9zc2libHkKIAkgKiByZXdyaXRpbmcgdGhlIGJlYWNvbiB0aW1lcnMuCiAJ ICovCi0JdGltZXIwID0gYXRoX2hhbF9nZXRuZXh0dGJ0dChhaCk7Ci0JdHNmZGVsdGEgPSAoaW50 MzJfdCkoKG5leHRzbG90ICUgVFVfVE9fVFNGKEhBTF9CRUFDT05fUEVSSU9EKzEpKSAtIFRVX1RP X1RTRih0aW1lcjApKTsKKwluZXh0dGJ0dCA9IGF0aF9oYWxfZ2V0bmV4dHRidHQoYWgpOworCXRz ZmRlbHRhID0gKGludDMyX3QpKChuZXh0c2xvdCAlIFRVX1RPX1RTRihIQUxfQkVBQ09OX1BFUklP RCArIDEpKSAtIG5leHR0YnR0KTsKIAogCURQUklOVEYoc2MsIEFUSF9ERUJVR19URE1BX1RJTUVS LAogCSAgICAidHNmZGVsdGEgJWQgYXZnICslZC8tJWRcbiIsIHRzZmRlbHRhLApAQCAtNTcwNSw3 ICs1NjczLDcgQEAKIAkJVERNQV9TQU1QTEUoc2MtPnNjX2F2Z3RzZmRlbHRhcCwgMCk7CiAJCVRE TUFfU0FNUExFKHNjLT5zY19hdmd0c2ZkZWx0YW0sIDApOwogCX0KLQl0dWRlbHRhID0gbmV4dHNs b3R0dSAtIHRpbWVyMDsKKwl0dWRlbHRhID0gbmV4dHNsb3R0dSAtIFRTRl9UT19UVShuZXh0dGJ0 dCA+PiAzMiwgbmV4dHRidHQpOwogCiAJLyoKIAkgKiBDb3B5IHNlbmRlcidzIHRpbWV0c3RhbXAg aW50byB0ZG1hIGllIHNvIHRoZXkgY2FuCkBAIC01NzI0LDEwICs1NjkyLDkgQEAKIAkJJm5pLT5u aV90c3RhbXAuZGF0YSwgOCk7CiAjaWYgMAogCURQUklOVEYoc2MsIEFUSF9ERUJVR19URE1BX1RJ TUVSLAotCSAgICAidHNmICVsbHUgbmV4dHNsb3QgJWxsdSAoJWQsICVkKSBuZXh0c2xvdHR1ICV1 IHRpbWVyMCAldSAoJWQpXG4iLAorCSAgICAidHNmICVsbHUgbmV4dHNsb3QgJWxsdSAoJWQsICVk KSBuZXh0c2xvdHR1ICV1IG5leHR0YnR0ICVsbHUgKCVkKVxuIiwKIAkgICAgKHVuc2lnbmVkIGxv bmcgbG9uZykgdHNmLCAodW5zaWduZWQgbG9uZyBsb25nKSBuZXh0c2xvdCwKLQkgICAgKGludCko bmV4dHNsb3QgLSB0c2YpLCB0c2ZkZWx0YSwKLQkgICAgbmV4dHNsb3R0dSwgdGltZXIwLCB0dWRl bHRhKTsKKwkgICAgKGludCkobmV4dHNsb3QgLSB0c2YpLCB0c2ZkZWx0YSwgbmV4dHNsb3R0dSwg bmV4dHRidHQsIHR1ZGVsdGEpOwogI2VuZGlmCiAJLyoKIAkgKiBBZGp1c3QgdGhlIGJlYWNvbiB0 aW1lcnMgb25seSB3aGVuIHB1bGxpbmcgdGhlbSBmb3J3YXJkCkBAIC01NzM2LDcgKzU3MDMsOCBA QAogCSAqIGNhdXNlIHRoZSB0aW1lcnMgdG8gc3RvcCBhbmQgZ2VuZXJhbGx5IGNhdXNlIGluc3Rh YmlsaXR5LgogCSAqIFRoaXMgYmFzaWNhbGx5IGZpbHRlcnMgb3V0IGp1bXBzIGR1ZSB0byBtaXNz ZWQgYmVhY29ucy4KIAkgKi8KLQlpZiAodHVkZWx0YSAhPSAwICYmICh0dWRlbHRhID4gMCB8fCAt dHVkZWx0YSA8IHNjLT5zY190ZG1hYmludHZhbCkpIHsKKwlpZiAodHVkZWx0YSAhPSAwICYmICh0 dWRlbHRhID4gMCB8fCAtdHVkZWx0YSA8IHNjLT5zY190ZG1hYmludHZhbCkgJiYKKwkJKHR1ZGVs dGEgJSBzYy0+c2NfdGRtYWJpbnR2YWwgIT0gMCkpIHsKIAkJYXRoX3RkbWFfc2V0dGltZXJzKHNj LCBuZXh0c2xvdHR1LCBzYy0+c2NfdGRtYWJpbnR2YWwpOwogCQlzYy0+c2Nfc3RhdHMuYXN0X3Rk bWFfdGltZXJzKys7CiAJfQo= --000e0cd3065cd0884204aba3a881--