Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Sep 2011 17:55:52 +0800
From:      Kang Yin Su <cantona@cantona.net>
To:        freebsd-wireless@freebsd.org
Subject:   Re: [PATCH] TDMA beacon from slave station
Message-ID:  <CAHjFwoBAK6T2_C9db6KVC%2B9WKV45v2%2BBKp=T%2B7o%2BBm3Ga9fHUQ@mail.gmail.com>
In-Reply-To: <CAHjFwoDRFMGRJnCCd9PQcksZ-pEg=SUAL1q-4scOnXjmTQArYQ@mail.gmail.com>
References:  <CAHjFwoDRFMGRJnCCd9PQcksZ-pEg=SUAL1q-4scOnXjmTQArYQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--000e0cd3065c375d3104abde4185
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hi all,

This is the correction from last TDMA patch.

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. Function ath_extend_tsf() assume receive time-stamp is in 15bits
TSF that leaks to incorrect beacon timers used for AR5416. The PCU 's
timestamp from AR5416 is 32bits while AR5212 is 15bits.

Thanks,
Yin

On Mon, Aug 29, 2011 at 8:01 PM, Kang Yin Su <cantona@cantona.net> wrote:
> 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.
> =A0- 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
>

--000e0cd3065c375d3104abde4185
Content-Type: application/octet-stream; 
	name="11nnexttbtt_fix_and_hal_func_relocate4.diff"
Content-Disposition: attachment; 
	filename="11nnexttbtt_fix_and_hal_func_relocate4.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gs1jq9hh1

SW5kZXg6IGlmX2F0aHZhci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGlmX2F0aHZhci5oCShyZXZpc2lvbiAy
MjUzMDIpCisrKyBpZl9hdGh2YXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgyLDYgKzQ4Miw4IEBA
CiAJKCgqKF9haCktPmFoX3NldEJlYWNvblRpbWVycykoKF9haCksIChfYnQpKSkKICNkZWZpbmUJ
YXRoX2hhbF9iZWFjb250aW1lcnMoX2FoLCBfYnMpIFwKIAkoKCooX2FoKS0+YWhfc2V0U3RhdGlv
bkJlYWNvblRpbWVycykoKF9haCksIChfYnMpKSkKKyNkZWZpbmUgYXRoX2hhbF9nZXRuZXh0dGJ0
dChfYWgpIFwKKwkoKCooX2FoKS0+YWhfZ2V0TmV4dFRCVFQpKChfYWgpKSkKICNkZWZpbmUJYXRo
X2hhbF9zZXRhc3NvY2lkKF9haCwgX2JzcywgX2Fzc29jaWQpIFwKIAkoKCooX2FoKS0+YWhfd3Jp
dGVBc3NvY2lkKSgoX2FoKSwgKF9ic3MpLCAoX2Fzc29jaWQpKSkKICNkZWZpbmUJYXRoX2hhbF9w
aHlkaXNhYmxlKF9haCkgXApJbmRleDogYXRoX2hhbC9hcjU0MTYvYXI1NDE2X2F0dGFjaC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1NDE2L2FyNTQxNl9hdHRhY2guYwkocmV2aXNpb24gMjI1
MzAyKQorKysgYXRoX2hhbC9hcjU0MTYvYXI1NDE2X2F0dGFjaC5jCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzYsNiArMTM2LDcgQEAKIAlhaC0+YWhfZ3Bpb0dldAkJCT0gYXI1NDE2R3Bpb0dldDsKIAlh
aC0+YWhfZ3Bpb1NldAkJCT0gYXI1NDE2R3Bpb1NldDsKIAlhaC0+YWhfZ3Bpb1NldEludHIJCT0g
YXI1NDE2R3Bpb1NldEludHI7CisJYWgtPmFoX2dldFRzZjY0CQkJPSBhcjU0MTZHZXRUc2Y2NDsK
IAlhaC0+YWhfcmVzZXRUc2YJCQk9IGFyNTQxNlJlc2V0VHNmOwogCWFoLT5haF9nZXRSZkdhaW4J
CT0gYXI1NDE2R2V0UmZnYWluOwogCWFoLT5haF9zZXRBbnRlbm5hU3dpdGNoCQk9IGFyNTQxNlNl
dEFudGVubmFTd2l0Y2g7CkBAIC0xNjAsNiArMTYxLDcgQEAKIAlhaC0+YWhfYmVhY29uSW5pdAkJ
PSBhcjU0MTZCZWFjb25Jbml0OwogCWFoLT5haF9zZXRTdGF0aW9uQmVhY29uVGltZXJzCT0gYXI1
NDE2U2V0U3RhQmVhY29uVGltZXJzOwogCWFoLT5haF9yZXNldFN0YXRpb25CZWFjb25UaW1lcnMJ
PSBhcjU0MTZSZXNldFN0YUJlYWNvblRpbWVyczsKKwlhaC0+YWhfZ2V0TmV4dFRCVFQJCT0gYXI1
NDE2R2V0TmV4dFRCVFQ7CiAKIAkvKiA4MDIuMTFuIEZ1bmN0aW9ucyAqLwogCWFoLT5haF9jaGFp
blR4RGVzYwkJPSBhcjU0MTZDaGFpblR4RGVzYzsKSW5kZXg6IGF0aF9oYWwvYXI1NDE2L2FyNTQx
Nl9yZXNldC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1NDE2L2FyNTQxNl9yZXNldC5jCShy
ZXZpc2lvbiAyMjUzMDIpCisrKyBhdGhfaGFsL2FyNTQxNi9hcjU0MTZfcmVzZXQuYwkod29ya2lu
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
biAyMjUzMDIpCisrKyBhdGhfaGFsL2FyNTQxNi9hcjU0MTYuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY5LDYgKzE2OSw3IEBACiBleHRlcm4Jdm9pZCBhcjU0MTZSZXNldFN0YUJlYWNvblRpbWVycyhz
dHJ1Y3QgYXRoX2hhbCAqYWgpOwogZXh0ZXJuCXZvaWQgYXI1NDE2U2V0U3RhQmVhY29uVGltZXJz
KHN0cnVjdCBhdGhfaGFsICphaCwKIAkJY29uc3QgSEFMX0JFQUNPTl9TVEFURSAqKTsKK2V4dGVy
bgl1aW50NjRfdCBhcjU0MTZHZXROZXh0VEJUVChzdHJ1Y3QgYXRoX2hhbCAqKTsKIAogZXh0ZXJu
CUhBTF9CT09MIGFyNTQxNkVlcHJvbVJlYWQoc3RydWN0IGF0aF9oYWwgKiwgdV9pbnQgb2ZmLCB1
aW50MTZfdCAqZGF0YSk7CiBleHRlcm4JSEFMX0JPT0wgYXI1NDE2RWVwcm9tV3JpdGUoc3RydWN0
IGF0aF9oYWwgKiwgdV9pbnQgb2ZmLCB1aW50MTZfdCBkYXRhKTsKQEAgLTE4Niw2ICsxODcsOCBA
QAogCiBleHRlcm4JdV9pbnQgYXI1NDE2R2V0V2lyZWxlc3NNb2RlcyhzdHJ1Y3QgYXRoX2hhbCAq
YWgpOwogZXh0ZXJuCXZvaWQgYXI1NDE2U2V0TGVkU3RhdGUoc3RydWN0IGF0aF9oYWwgKmFoLCBI
QUxfTEVEX1NUQVRFIHN0YXRlKTsKK2V4dGVybgl1aW50NjRfdCBhcjU0MTZHZXRUc2Y2NChzdHJ1
Y3QgYXRoX2hhbCAqYWgpOworZXh0ZXJuCXZvaWQgYXI1NDE2U2V0VHNmNjQoc3RydWN0IGF0aF9o
YWwgKmFoLCB1aW50NjRfdCB0c2Y2NCk7CiBleHRlcm4Jdm9pZCBhcjU0MTZSZXNldFRzZihzdHJ1
Y3QgYXRoX2hhbCAqYWgpOwogZXh0ZXJuCUhBTF9CT09MIGFyNTQxNlNldEFudGVubmFTd2l0Y2go
c3RydWN0IGF0aF9oYWwgKiwgSEFMX0FOVF9TRVRUSU5HKTsKIGV4dGVybglIQUxfQk9PTCBhcjU0
MTZTZXREZWNvbXBNYXNrKHN0cnVjdCBhdGhfaGFsICosIHVpbnQxNl90LCBpbnQpOwpJbmRleDog
YXRoX2hhbC9hcjU0MTYvYXI1NDE2X2JlYWNvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1
NDE2L2FyNTQxNl9iZWFjb24uYwkocmV2aXNpb24gMjI1MzAyKQorKysgYXRoX2hhbC9hcjU0MTYv
YXI1NDE2X2JlYWNvbi5jCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxNSBAQAogI2RlZmlu
ZQlPTkVfRUlHSFRIX1RVX1RPX1VTRUMoX3R1OCkJKChfdHU4KSA8PCA3KQogCiAvKgorICogUmV0
dXJuIHRoZSBoYXJkd2FyZSBOZXh0VEJUVCBpbiBUU0YKKyAqLwordWludDY0X3QKK2FyNTQxNkdl
dE5leHRUQlRUKHN0cnVjdCBhdGhfaGFsICphaCkKK3sKKwlyZXR1cm4gT1NfUkVHX1JFQUQoYWgs
IEFSX05FWFRfVEJUVCk7Cit9CisKKy8qCiAgKiBJbml0aWFsaXplIGFsbCBvZiB0aGUgaGFyZHdh
cmUgcmVnaXN0ZXJzIHVzZWQgdG8KICAqIHNlbmQgYmVhY29ucy4gIE5vdGUgdGhhdCBmb3Igc3Rh
dGlvbiBvcGVyYXRpb24gdGhlCiAgKiBkcml2ZXIgY2FsbHMgYXI1NDE2U2V0U3RhQmVhY29uVGlt
ZXJzIGluc3RlYWQuCkluZGV4OiBhdGhfaGFsL2FyNTQxNi9hcjU0MTZfbWlzYy5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGF0aF9oYWwvYXI1NDE2L2FyNTQxNl9taXNjLmMJKHJldmlzaW9uIDIyNTMwMikKKysr
IGF0aF9oYWwvYXI1NDE2L2FyNTQxNl9taXNjLmMJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkz
LDQxIEBACiB9CiAKIC8qCisgKiBHZXQgdGhlIGN1cnJlbnQgaGFyZHdhcmUgdHNmIGZvciBzdGFt
bG1lCisgKi8KK3VpbnQ2NF90CithcjU0MTZHZXRUc2Y2NChzdHJ1Y3QgYXRoX2hhbCAqYWgpCit7
CisJdWludDMyX3QgbG93MSwgbG93MiwgdTMyOworCisJLyogc3luYyBtdWx0aS13b3JkIHJlYWQg
Ki8KKwlsb3cxID0gT1NfUkVHX1JFQUQoYWgsIEFSX1RTRl9MMzIpOworCXUzMiA9IE9TX1JFR19S
RUFEKGFoLCBBUl9UU0ZfVTMyKTsKKwlsb3cyID0gT1NfUkVHX1JFQUQoYWgsIEFSX1RTRl9MMzIp
OworCWlmIChsb3cyIDwgbG93MSkgewkvKiByb2xsIG92ZXIgKi8KKwkJLyoKKwkJICogSWYgd2Ug
YXJlIG5vdCBwcmVlbXB0ZWQgdGhpcyB3aWxsIHdvcmsuICBJZiB3ZSBhcmUKKwkJICogdGhlbiB3
ZSByZS1yZWFkaW5nIEFSX1RTRl9VMzIgZG9lcyBubyBnb29kIGFzIHRoZQorCQkgKiBsb3cgYml0
cyB3aWxsIGJlIG1lYW5pbmdsZXNzLiAgTGlrZXdpc2UgcmVhZGluZworCQkgKiBMMzIsIFUzMiwg
VTMyLCB0aGVuIGNvbXBhcmluZyB0aGUgbGFzdCB0d28gcmVhZHMKKwkJICogdG8gY2hlY2sgZm9y
IHJvbGxvdmVyIGRvZXNuJ3QgaGVscCBpZiBwcmVlbXB0ZWQtLXNvCisJCSAqIHdlIHRha2UgdGhp
cyBhcHByb2FjaCBhcyBpdCBjb3N0cyBvbmUgbGVzcyBQQ0kgcmVhZAorCQkgKiB3aGljaCBjYW4g
YmUgbm90aWNlYWJsZSB3aGVuIGRvaW5nIHRoaW5ncyBsaWtlCisJCSAqIHRpbWVzdGFtcGluZyBw
YWNrZXRzIGluIG1vbml0b3IgbW9kZS4KKwkJICovCisJCXUzMisrOworCX0KKwlyZXR1cm4gKCgo
dWludDY0X3QpIHUzMikgPDwgMzIpIHwgKCh1aW50NjRfdCkgbG93Mik7Cit9CisKK3ZvaWQKK2Fy
NTQxNlNldFRzZjY0KHN0cnVjdCBhdGhfaGFsICphaCwgdWludDY0X3QgdHNmNjQpCit7CisJT1Nf
UkVHX1dSSVRFKGFoLCBBUl9UU0ZfTDMyLCB0c2Y2NCAmIDB4ZmZmZmZmZmYpOworCU9TX1JFR19X
UklURShhaCwgQVJfVFNGX1UzMiwgKHRzZjY0ID4+IDMyKSAmIDB4ZmZmZmZmZmYpOworfQorCisv
KgogICogUmVzZXQgdGhlIGN1cnJlbnQgaGFyZHdhcmUgdHNmIGZvciBzdGFtbG1lLgogICovCiB2
b2lkCkluZGV4OiBhdGhfaGFsL2FoLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYXRoX2hhbC9haC5jCShyZXZp
c2lvbiAyMjUzMDIpCisrKyBhdGhfaGFsL2FoLmMJKHdvcmtpbmcgY29weSkKQEAgLTEyMjIsMyAr
MTIyMiwzNyBAQAogICAgIH0KICAgICByZXR1cm4gcnY7CiB9CisKKy8qCisgKiBBZGp1c3QgdGhl
IFRTRi4KKyAqLwordm9pZAorYXRoX2hhbF9hZGp1c3R0c2Yoc3RydWN0IGF0aF9oYWwgKmFoLCBp
bnQzMl90IHRzZmRlbHRhKQoreworCS8qIFhYWCBoYW5kbGUgd3JhcC9vdmVyZmxvdyAqLworCU9T
X1JFR19XUklURShhaCwgQVJfVFNGX0wzMiwgT1NfUkVHX1JFQUQoYWgsIEFSX1RTRl9MMzIpICsg
dHNmZGVsdGEpOworfQorCisvKgorICogRW5hYmxlIG9yIGRpc2FibGUgQ0NBLgorICovCit2b2lk
CithdGhfaGFsX3NldGNjYShzdHJ1Y3QgYXRoX2hhbCAqYWgsIGludCBlbmEpCit7CisJLyoKKwkg
KiBOQjogZmlsbCBtZSBpbjsgdGhpcyBpcyBub3QgcHJvdmlkZWQgYnkgZGVmYXVsdCBiZWNhdXNl
IGRpc2FibGluZworCSAqICAgICBDQ0EgaW4gbW9zdCBsb2NhbGVzIHZpb2xhdGVzIHJlZ3VsYXRv
cnkuCisJICovCit9CisKKy8qCisgKiBHZXQgQ0NBIHNldHRpbmcuCisgKi8KK2ludAorYXRoX2hh
bF9nZXRjY2Eoc3RydWN0IGF0aF9oYWwgKmFoKQoreworCXVfaW50MzJfdCBkaWFnOworCWlmIChh
dGhfaGFsX2dldGNhcGFiaWxpdHkoYWgsIEhBTF9DQVBfRElBRywgMCwgJmRpYWcpICE9IEhBTF9P
SykKKwkJcmV0dXJuIDE7CisJcmV0dXJuICgoZGlhZyAmIDB4NTAwMDAwKSA9PSAwKTsKK30KSW5k
ZXg6IGF0aF9oYWwvYXI1MjEwL2FyNTIxMF9hdHRhY2guYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhdGhfaGFs
L2FyNTIxMC9hcjUyMTBfYXR0YWNoLmMJKHJldmlzaW9uIDIyNTMwMikKKysrIGF0aF9oYWwvYXI1
MjEwL2FyNTIxMF9hdHRhY2guYwkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCw3IEBACiAJ
LmFoX2JlYWNvbkluaXQJCQk9IGFyNTIxMEJlYWNvbkluaXQsCiAJLmFoX3NldFN0YXRpb25CZWFj
b25UaW1lcnMJPSBhcjUyMTBTZXRTdGFCZWFjb25UaW1lcnMsCiAJLmFoX3Jlc2V0U3RhdGlvbkJl
YWNvblRpbWVycwk9IGFyNTIxMFJlc2V0U3RhQmVhY29uVGltZXJzLAorCS5haF9nZXROZXh0VEJU
VAkJCT0gYXI1MjEwR2V0TmV4dFRCVFQsCiAKIAkvKiBJbnRlcnJ1cHQgRnVuY3Rpb25zICovCiAJ
LmFoX2lzSW50ZXJydXB0UGVuZGluZwkJPSBhcjUyMTBJc0ludGVycnVwdFBlbmRpbmcsCkluZGV4
OiBhdGhfaGFsL2FyNTIxMC9hcjUyMTAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhdGhfaGFsL2FyNTIxMC9h
cjUyMTAuaAkocmV2aXNpb24gMjI1MzAyKQorKysgYXRoX2hhbC9hcjUyMTAvYXI1MjEwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsNyBAQAogZXh0ZXJuCXZvaWQgYXI1MjEwU2V0U3Rh
QmVhY29uVGltZXJzKHN0cnVjdCBhdGhfaGFsICosCiAJCWNvbnN0IEhBTF9CRUFDT05fU1RBVEUg
Kik7CiBleHRlcm4Jdm9pZCBhcjUyMTBSZXNldFN0YUJlYWNvblRpbWVycyhzdHJ1Y3QgYXRoX2hh
bCAqKTsKK2V4dGVybgl1aW50NjRfdCBhcjUyMTBHZXROZXh0VEJUVChzdHJ1Y3QgYXRoX2hhbCAq
KTsKIAogZXh0ZXJuCUhBTF9CT09MIGFyNTIxMElzSW50ZXJydXB0UGVuZGluZyhzdHJ1Y3QgYXRo
X2hhbCAqKTsKIGV4dGVybglIQUxfQk9PTCBhcjUyMTBHZXRQZW5kaW5nSW50ZXJydXB0cyhzdHJ1
Y3QgYXRoX2hhbCAqLCBIQUxfSU5UICopOwpJbmRleDogYXRoX2hhbC9hcjUyMTAvYXI1MjEwX2Jl
YWNvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1MjEwL2FyNTIxMF9iZWFjb24uYwkocmV2
aXNpb24gMjI1MzAyKQorKysgYXRoX2hhbC9hcjUyMTAvYXI1MjEwX2JlYWNvbi5jCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNywxNyBAQAogI2luY2x1ZGUgImFyNTIxMC9hcjUyMTBkZXNjLmgi
CiAKIC8qCisgKiBSZXR1cm4gdGhlIGhhcmR3YXJlIE5leHRUQlRUIGluIFRTRgorICovCit1aW50
NjRfdAorYXI1MjEwR2V0TmV4dFRCVFQoc3RydWN0IGF0aF9oYWwgKmFoKQoreworI2RlZmluZSBU
VV9UT19UU0YoX3R1KQkoKCh1aW50NjRfdCkoX3R1KSkgPDwgMTApCisJcmV0dXJuIFRVX1RPX1RT
RihPU19SRUdfUkVBRChhaCwgQVJfVElNRVIwKSk7CisjdW5kZWYgVFVfVE9fVFNGCit9CisKKy8q
CiAgKiBJbml0aWFsaXplIGFsbCBvZiB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIHVzZWQgdG8gc2Vu
ZCBiZWFjb25zLgogICovCiB2b2lkCkluZGV4OiBhdGhfaGFsL2FyNTIxMS9hcjUyMTFfYXR0YWNo
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gYXRoX2hhbC9hcjUyMTEvYXI1MjExX2F0dGFjaC5jCShyZXZpc2lv
biAyMjUzMDIpCisrKyBhdGhfaGFsL2FyNTIxMS9hcjUyMTFfYXR0YWNoLmMJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OCw2ICsxNDgsNyBAQAogCS5haF9iZWFjb25Jbml0CQkJPSBhcjUyMTFCZWFjb25J
bml0LAogCS5haF9zZXRTdGF0aW9uQmVhY29uVGltZXJzCT0gYXI1MjExU2V0U3RhQmVhY29uVGlt
ZXJzLAogCS5haF9yZXNldFN0YXRpb25CZWFjb25UaW1lcnMJPSBhcjUyMTFSZXNldFN0YUJlYWNv
blRpbWVycywKKwkuYWhfZ2V0TmV4dFRCVFQJCQk9IGFyNTIxMUdldE5leHRUQlRULAogCiAJLyog
SW50ZXJydXB0IEZ1bmN0aW9ucyAqLwogCS5haF9pc0ludGVycnVwdFBlbmRpbmcJCT0gYXI1MjEx
SXNJbnRlcnJ1cHRQZW5kaW5nLApJbmRleDogYXRoX2hhbC9hcjUyMTEvYXI1MjExLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gYXRoX2hhbC9hcjUyMTEvYXI1MjExLmgJKHJldmlzaW9uIDIyNTMwMikKKysrIGF0
aF9oYWwvYXI1MjExL2FyNTIxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsNiArMjk2LDcgQEAK
IGV4dGVybgl2b2lkIGFyNTIxMVNldFN0YUJlYWNvblRpbWVycyhzdHJ1Y3QgYXRoX2hhbCAqLAog
CQljb25zdCBIQUxfQkVBQ09OX1NUQVRFICopOwogZXh0ZXJuCXZvaWQgYXI1MjExUmVzZXRTdGFC
ZWFjb25UaW1lcnMoc3RydWN0IGF0aF9oYWwgKik7CitleHRlcm4JdWludDY0X3QgYXI1MjExR2V0
TmV4dFRCVFQoc3RydWN0IGF0aF9oYWwgKik7CiAKIGV4dGVybglIQUxfQk9PTCBhcjUyMTFJc0lu
dGVycnVwdFBlbmRpbmcoc3RydWN0IGF0aF9oYWwgKik7CiBleHRlcm4JSEFMX0JPT0wgYXI1MjEx
R2V0UGVuZGluZ0ludGVycnVwdHMoc3RydWN0IGF0aF9oYWwgKiwgSEFMX0lOVCAqKTsKSW5kZXg6
IGF0aF9oYWwvYXI1MjExL2FyNTIxMV9iZWFjb24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhdGhfaGFsL2Fy
NTIxMS9hcjUyMTFfYmVhY29uLmMJKHJldmlzaW9uIDIyNTMwMikKKysrIGF0aF9oYWwvYXI1MjEx
L2FyNTIxMV9iZWFjb24uYwkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMTcgQEAKICAqLwog
CiAvKgorICogUmV0dXJuIHRoZSBoYXJkd2FyZSBOZXh0VEJUVCBpbiBUU0YKKyAqLwordWludDY0
X3QKK2FyNTIxMUdldE5leHRUQlRUKHN0cnVjdCBhdGhfaGFsICphaCkKK3sKKyNkZWZpbmUgVFVf
VE9fVFNGKF90dSkJKCgodWludDY0X3QpKF90dSkpIDw8IDEwKQorCXJldHVybiBUVV9UT19UU0Yo
T1NfUkVHX1JFQUQoYWgsIEFSX1RJTUVSMCkpOworI3VuZGVmIFRVX1RPX1RTRgorfQorCisvKgog
ICogSW5pdGlhbGl6ZSBhbGwgb2YgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyB1c2VkIHRvIHNlbmQg
YmVhY29ucy4KICAqLwogdm9pZApJbmRleDogYXRoX2hhbC9hcjUyMTIvYXI1MjEyX2F0dGFjaC5j
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGF0aF9oYWwvYXI1MjEyL2FyNTIxMl9hdHRhY2guYwkocmV2aXNpb24g
MjI1MzAyKQorKysgYXRoX2hhbC9hcjUyMTIvYXI1MjEyX2F0dGFjaC5jCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTEsNiArMTUxLDcgQEAKIAkuYWhfYmVhY29uSW5pdAkJCT0gYXI1MjEyQmVhY29uSW5p
dCwKIAkuYWhfc2V0U3RhdGlvbkJlYWNvblRpbWVycwk9IGFyNTIxMlNldFN0YUJlYWNvblRpbWVy
cywKIAkuYWhfcmVzZXRTdGF0aW9uQmVhY29uVGltZXJzCT0gYXI1MjEyUmVzZXRTdGFCZWFjb25U
aW1lcnMsCisJLmFoX2dldE5leHRUQlRUCQkJPSBhcjUyMTJHZXROZXh0VEJUVCwKIAogCS8qIElu
dGVycnVwdCBGdW5jdGlvbnMgKi8KIAkuYWhfaXNJbnRlcnJ1cHRQZW5kaW5nCQk9IGFyNTIxMklz
SW50ZXJydXB0UGVuZGluZywKSW5kZXg6IGF0aF9oYWwvYXI1MjEyL2FyNTIxMi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGF0aF9oYWwvYXI1MjEyL2FyNTIxMi5oCShyZXZpc2lvbiAyMjUzMDIpCisrKyBhdGhf
aGFsL2FyNTIxMi9hcjUyMTIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDYgKzQzMCw3IEBACiBl
eHRlcm4Jdm9pZCBhcjUyMTJSZXNldFN0YUJlYWNvblRpbWVycyhzdHJ1Y3QgYXRoX2hhbCAqYWgp
OwogZXh0ZXJuCXZvaWQgYXI1MjEyU2V0U3RhQmVhY29uVGltZXJzKHN0cnVjdCBhdGhfaGFsICph
aCwKIAkJY29uc3QgSEFMX0JFQUNPTl9TVEFURSAqKTsKK2V4dGVybgl1aW50NjRfdCBhcjUyMTJH
ZXROZXh0VEJUVChzdHJ1Y3QgYXRoX2hhbCAqKTsKIAogZXh0ZXJuCUhBTF9CT09MIGFyNTIxMklz
SW50ZXJydXB0UGVuZGluZyhzdHJ1Y3QgYXRoX2hhbCAqYWgpOwogZXh0ZXJuCUhBTF9CT09MIGFy
NTIxMkdldFBlbmRpbmdJbnRlcnJ1cHRzKHN0cnVjdCBhdGhfaGFsICphaCwgSEFMX0lOVCAqKTsK
SW5kZXg6IGF0aF9oYWwvYXI1MjEyL2FyNTIxMl9iZWFjb24uYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhdGhf
aGFsL2FyNTIxMi9hcjUyMTJfYmVhY29uLmMJKHJldmlzaW9uIDIyNTMwMikKKysrIGF0aF9oYWwv
YXI1MjEyL2FyNTIxMl9iZWFjb24uYwkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTcgQEAK
ICNpbmNsdWRlICJhcjUyMTIvYXI1MjEyZGVzYy5oIgogCiAvKgorICogUmV0dXJuIHRoZSBoYXJk
d2FyZSBOZXh0VEJUVCBpbiBUU0YKKyAqLwordWludDY0X3QKK2FyNTIxMkdldE5leHRUQlRUKHN0
cnVjdCBhdGhfaGFsICphaCkKK3sKKyNkZWZpbmUgVFVfVE9fVFNGKF90dSkJKCgodWludDY0X3Qp
KF90dSkpIDw8IDEwKQorCXJldHVybiBUVV9UT19UU0YoT1NfUkVHX1JFQUQoYWgsIEFSX1RJTUVS
MCkpOworI3VuZGVmIFRVX1RPX1RTRgorfQorCisvKgogICogSW5pdGlhbGl6ZSBhbGwgb2YgdGhl
IGhhcmR3YXJlIHJlZ2lzdGVycyB1c2VkIHRvCiAgKiBzZW5kIGJlYWNvbnMuICBOb3RlIHRoYXQg
Zm9yIHN0YXRpb24gb3BlcmF0aW9uIHRoZQogICogZHJpdmVyIGNhbGxzIGFyNTIxMlNldFN0YUJl
YWNvblRpbWVycyBpbnN0ZWFkLgpJbmRleDogYXRoX2hhbC9haC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGF0
aF9oYWwvYWguaAkocmV2aXNpb24gMjI1MzAyKQorKysgYXRoX2hhbC9haC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OTYsNiArOTk2LDcgQEAKIAl2b2lkCSAgX19haGRlY2woKmFoX3NldFN0YXRpb25C
ZWFjb25UaW1lcnMpKHN0cnVjdCBhdGhfaGFsKiwKIAkJCQljb25zdCBIQUxfQkVBQ09OX1NUQVRF
ICopOwogCXZvaWQJICBfX2FoZGVjbCgqYWhfcmVzZXRTdGF0aW9uQmVhY29uVGltZXJzKShzdHJ1
Y3QgYXRoX2hhbCopOworCXVpbnQ2NF90ICBfX2FoZGVjbCgqYWhfZ2V0TmV4dFRCVFQpKHN0cnVj
dCBhdGhfaGFsICopOwogCiAJLyogODAyLjExbiBGdW5jdGlvbnMgKi8KIAlIQUxfQk9PTCAgX19h
aGRlY2woKmFoX2NoYWluVHhEZXNjKShzdHJ1Y3QgYXRoX2hhbCAqLApAQCAtMTEzOCw0ICsxMTM5
LDIwIEBACiBleHRlcm4gdWludDE2X3QgX19haGRlY2wgYXRoX2hhbF9jb21wdXRldHh0aW1lKHN0
cnVjdCBhdGhfaGFsICosCiAJCWNvbnN0IEhBTF9SQVRFX1RBQkxFICpyYXRlcywgdWludDMyX3Qg
ZnJhbWVMZW4sCiAJCXVpbnQxNl90IHJhdGVpeCwgSEFMX0JPT0wgc2hvcnRQcmVhbWJsZSk7CisK
Ky8qCisgKiBBZGp1c3QgdGhlIFRTRi4KKyAqLworZXh0ZXJuIHZvaWQgX19haGRlY2wgYXRoX2hh
bF9hZGp1c3R0c2Yoc3RydWN0IGF0aF9oYWwgKmFoLCBpbnQzMl90IHRzZmRlbHRhKTsKKworLyoK
KyAqIEVuYWJsZSBvciBkaXNhYmxlIENDQS4KKyAqLwordm9pZCBfX2FoZGVjbCBhdGhfaGFsX3Nl
dGNjYShzdHJ1Y3QgYXRoX2hhbCAqYWgsIGludCBlbmEpOworCisvKgorICogR2V0IENDQSBzZXR0
aW5nLgorICovCitpbnQgX19haGRlY2wgYXRoX2hhbF9nZXRjY2Eoc3RydWN0IGF0aF9oYWwgKmFo
KTsKKwogI2VuZGlmIC8qIF9BVEhfQUhfSF8gKi8KSW5kZXg6IGlmX2F0aC5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGlmX2F0aC5jCShyZXZpc2lvbiAyMjUzMDIpCisrKyBpZl9hdGguYwkod29ya2luZyBjb3B5
KQpAQCAtMjE0LDI0ICsyMTQsNiBAQAogc3RhdGljIHZvaWQJYXRoX3RkbWFfYmVhY29uX3NlbmQo
c3RydWN0IGF0aF9zb2Z0YyAqc2MsCiAJCSAgICBzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXApOwog
Ci1zdGF0aWMgX19pbmxpbmUgdm9pZAotYXRoX2hhbF9zZXRjY2Eoc3RydWN0IGF0aF9oYWwgKmFo
LCBpbnQgZW5hKQotewotCS8qCi0JICogTkI6IGZpbGwgbWUgaW47IHRoaXMgaXMgbm90IHByb3Zp
ZGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBkaXNhYmxpbmcKLQkgKiAgICAgQ0NBIGluIG1vc3QgbG9j
YWxlcyB2aW9sYXRlcyByZWd1bGF0b3J5LgotCSAqLwotfQotCi1zdGF0aWMgX19pbmxpbmUgaW50
Ci1hdGhfaGFsX2dldGNjYShzdHJ1Y3QgYXRoX2hhbCAqYWgpCi17Ci0JdV9pbnQzMl90IGRpYWc7
Ci0JaWYgKGF0aF9oYWxfZ2V0Y2FwYWJpbGl0eShhaCwgSEFMX0NBUF9ESUFHLCAwLCAmZGlhZykg
IT0gSEFMX09LKQotCQlyZXR1cm4gMTsKLQlyZXR1cm4gKChkaWFnICYgMHg1MDAwMDApID09IDAp
OwotfQotCiAjZGVmaW5lCVRETUFfRVBfTVVMVElQTElFUgkoMTw8MTApIC8qIHBvdzIgdG8gb3B0
aW1pemUgb3V0ICogYW5kIC8gKi8KICNkZWZpbmUJVERNQV9MUEZfTEVOCQk2CiAjZGVmaW5lCVRE
TUFfRFVNTVlfTUFSS0VSCTB4MTI3CkBAIC0zMjk0LDE0ICszMjc2LDQ0IEBACiAgKiBhIGZ1bGwg
NjQtYml0IFRTRiB1c2luZyB0aGUgc3BlY2lmaWVkIFRTRi4KICAqLwogc3RhdGljIF9faW5saW5l
IHVfaW50NjRfdAotYXRoX2V4dGVuZF90c2YodV9pbnQzMl90IHJzdGFtcCwgdV9pbnQ2NF90IHRz
ZikKK2F0aF9leHRlbmRfdHNmX2FyNTIxMih1X2ludDMyX3QgcnN0YW1wLCB1X2ludDY0X3QgdHNm
KQogewogCWlmICgodHNmICYgMHg3ZmZmKSA8IHJzdGFtcCkKIAkJdHNmIC09IDB4ODAwMDsKKwog
CXJldHVybiAoKHRzZiAmfiAweDdmZmYpIHwgcnN0YW1wKTsKIH0KIAogLyoKKyAqIEV4dGVuZCAz
Mi1iaXQgdGltZSBzdGFtcCBmcm9tIHJ4IGRlc2NyaXB0b3IgdG8KKyAqIGEgZnVsbCA2NC1iaXQg
VFNGIHVzaW5nIHRoZSBzcGVjaWZpZWQgVFNGLgorICovCitzdGF0aWMgX19pbmxpbmUgdV9pbnQ2
NF90CithdGhfZXh0ZW5kX3RzZl9hcjU0MTYodV9pbnQzMl90IHJzdGFtcCwgdV9pbnQ2NF90IHRz
ZikKK3sKKwl1X2ludDMyX3QgdHNmX2xvdyA9IHRzZiAmIDB4ZmZmZmZmZmY7CisJdV9pbnQ2NF90
IHRzZjY0ID0gKHRzZiAmIH4weGZmZmZmZmZmVUxMKSB8IHJzdGFtcDsKKworCWlmIChyc3RhbXAg
PiB0c2ZfbG93ICYmIChyc3RhbXAgLSB0c2ZfbG93ID4gMHgxMDAwMDAwMCkpCisJCXRzZjY0IC09
IDB4MTAwMDAwMDAwVUxMOworCisJaWYgKHJzdGFtcCA8IHRzZl9sb3cgJiYgKHRzZl9sb3cgLSBy
c3RhbXAgPiAweDEwMDAwMDAwKSkKKwkJdHNmNjQgKz0gMHgxMDAwMDAwMDBVTEw7CisKKwlyZXR1
cm4gdHNmNjQ7Cit9CisKK3N0YXRpYyBfX2lubGluZSB1X2ludDY0X3QKK2F0aF9leHRlbmRfdHNm
KHN0cnVjdCBhdGhfc29mdGMgKnNjLHVfaW50MzJfdCByc3RhbXAsIHVfaW50NjRfdCB0c2YpCit7
CisJLyogQVI1NDE2ICovCisJaWYgKHNjLT5zY19haC0+YWhfbWFnaWMgPT0gMHgyMDA2NTQxNikK
KwkJcmV0dXJuIGF0aF9leHRlbmRfdHNmX2FyNTQxNihyc3RhbXAsIHRzZik7CisJZWxzZQorCQly
ZXR1cm4gYXRoX2V4dGVuZF90c2ZfYXI1MjEyKHJzdGFtcCwgdHNmKTsKK30KKworLyoKICAqIElu
dGVyY2VwdCBtYW5hZ2VtZW50IGZyYW1lcyB0byBjb2xsZWN0IGJlYWNvbiByc3NpIGRhdGEKICAq
IGFuZCB0byBkbyBpYnNzIG1lcmdlcy4KICAqLwpAQCAtMzMzNCw3ICszMzQ2LDcgQEAKIAkJaWYg
KHZhcC0+aXZfb3Btb2RlID09IElFRUU4MDIxMV9NX0lCU1MgJiYKIAkJICAgIHZhcC0+aXZfc3Rh
dGUgPT0gSUVFRTgwMjExX1NfUlVOKSB7CiAJCQl1aW50MzJfdCByc3RhbXAgPSBzYy0+c2NfbGFz
dHJzLT5yc190c3RhbXA7Ci0JCQl1aW50NjRfdCB0c2YgPSBhdGhfZXh0ZW5kX3RzZihyc3RhbXAs
CisJCQl1aW50NjRfdCB0c2YgPSBhdGhfZXh0ZW5kX3RzZihzYywgcnN0YW1wLAogCQkJCWF0aF9o
YWxfZ2V0dHNmNjQoc2MtPnNjX2FoKSk7CiAJCQkvKgogCQkJICogSGFuZGxlIGlic3MgbWVyZ2Ug
YXMgbmVlZGVkOyBjaGVjayB0aGUgdHNmIG9uIHRoZQpAQCAtMzQwNiw3ICszNDE4LDcgQEAKIAkJ
CXNjLT5zY19yeF90aC53cl9mbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfRl9TSE9SVEdJOwog
CX0KICNlbmRpZgotCXNjLT5zY19yeF90aC53cl90c2YgPSBodG9sZTY0KGF0aF9leHRlbmRfdHNm
KHJzLT5yc190c3RhbXAsIHRzZikpOworCXNjLT5zY19yeF90aC53cl90c2YgPSBodG9sZTY0KGF0
aF9leHRlbmRfdHNmKHNjLCBycy0+cnNfdHN0YW1wLCB0c2YpKTsKIAlpZiAocnMtPnJzX3N0YXR1
cyAmIEhBTF9SWEVSUl9DUkMpCiAJCXNjLT5zY19yeF90aC53cl9mbGFncyB8PSBJRUVFODAyMTFf
UkFESU9UQVBfRl9CQURGQ1M7CiAJLyogWFhYIHByb3BhZ2F0ZSBvdGhlciBlcnJvciBmbGFncyBm
cm9tIGRlc2NyaXB0b3IgKi8KQEAgLTU0NjAsMjAgKzU0NzIsNiBAQAogfQogCiAjaWZkZWYgSUVF
RTgwMjExX1NVUFBPUlRfVERNQQotc3RhdGljIF9faW5saW5lIHVpbnQzMl90Ci1hdGhfaGFsX2dl
dG5leHR0YnR0KHN0cnVjdCBhdGhfaGFsICphaCkKLXsKLSNkZWZpbmUJQVJfVElNRVIwCTB4ODAy
OAotCXJldHVybiBPU19SRUdfUkVBRChhaCwgQVJfVElNRVIwKTsKLX0KLQotc3RhdGljIF9faW5s
aW5lIHZvaWQKLWF0aF9oYWxfYWRqdXN0dHNmKHN0cnVjdCBhdGhfaGFsICphaCwgaW50MzJfdCB0
c2ZkZWx0YSkKLXsKLQkvKiBYWFggaGFuZGxlIHdyYXAvb3ZlcmZsb3cgKi8KLQlPU19SRUdfV1JJ
VEUoYWgsIEFSX1RTRl9MMzIsIE9TX1JFR19SRUFEKGFoLCBBUl9UU0ZfTDMyKSArIHRzZmRlbHRh
KTsKLX0KLQogc3RhdGljIHZvaWQKIGF0aF90ZG1hX3NldHRpbWVycyhzdHJ1Y3QgYXRoX3NvZnRj
ICpzYywgdV9pbnQzMl90IG5leHR0YnR0LCB1X2ludDMyX3QgYmludHZhbCkKIHsKQEAgLTU2Mjks
OCArNTYyNyw4IEBACiAJc3RydWN0IGF0aF9zb2Z0YyAqc2MgPSBpYy0+aWNfaWZwLT5pZl9zb2Z0
YzsKIAlzdHJ1Y3QgYXRoX2hhbCAqYWggPSBzYy0+c2NfYWg7CiAJY29uc3QgSEFMX1JBVEVfVEFC
TEUgKnJ0ID0gc2MtPnNjX2N1cnJhdGVzOwotCXVfaW50NjRfdCB0c2YsIHJzdGFtcCwgbmV4dHNs
b3Q7Ci0JdV9pbnQzMl90IHR4dGltZSwgbmV4dHNsb3R0dSwgdGltZXIwOworCXVfaW50NjRfdCB0
c2YsIHJzdGFtcCwgbmV4dHNsb3QsIG5leHR0YnR0OworCXVfaW50MzJfdCB0eHRpbWUsIG5leHRz
bG90dHU7CiAJaW50MzJfdCB0dWRlbHRhLCB0c2ZkZWx0YTsKIAljb25zdCBzdHJ1Y3QgYXRoX3J4
X3N0YXR1cyAqcnM7CiAJaW50IHJpeDsKQEAgLTU2NjEsNyArNTY1OSw3IEBACiAJLyogZXh0ZW5k
IHJ4IHRpbWVzdGFtcCB0byA2NCBiaXRzICovCiAJcnMgPSBzYy0+c2NfbGFzdHJzOwogCXRzZiA9
IGF0aF9oYWxfZ2V0dHNmNjQoYWgpOwotCXJzdGFtcCA9IGF0aF9leHRlbmRfdHNmKHJzLT5yc190
c3RhbXAsIHRzZik7CisJcnN0YW1wID0gYXRoX2V4dGVuZF90c2Yoc2MsIHJzLT5yc190c3RhbXAs
IHRzZik7CiAJLyoKIAkgKiBUaGUgcnggdGltZXN0YW1wIGlzIHNldCBieSB0aGUgaGFyZHdhcmUg
b24gY29tcGxldGluZwogCSAqIHJlY2VwdGlvbiAoYXQgdGhlIHBvaW50IHdoZXJlIHRoZSByeCBk
ZXNjcmlwdG9yIGlzIERNQSdkCkBAIC01Njc3LDE1ICs1Njc1LDE1IEBACiAJbmV4dHNsb3R0dSA9
IFRTRl9UT19UVShuZXh0c2xvdD4+MzIsIG5leHRzbG90KSAmIEhBTF9CRUFDT05fUEVSSU9EOwog
CiAJLyoKLQkgKiBUSU1FUjAgaXMgdGhlIGgvdydzIGlkZWEgb2YgTmV4dFRCVFQgKGluIFRVJ3Mp
LiAgQ29udmVydAotCSAqIHRvIHVzZWNzIGFuZCBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgYmV0
d2VlbiB3aGF0IHRoZQorCSAqIFJldHJpZXZlIHRoZSBoYXJkd2FyZSBOZXh0VEJUVCBpbiB1c2Vj
cworCSAqIGFuZCBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB3aGF0IHRoZQogCSAq
IG90aGVyIHN0YXRpb24gdGhpbmtzIGFuZCB3aGF0IHdlIGhhdmUgcHJvZ3JhbW1lZC4gIFRoaXMK
IAkgKiBsZXRzIHVzIGZpZ3VyZSBob3cgdG8gYWRqdXN0IG91ciB0aW1lcnMgdG8gbWF0Y2guICBU
aGUKIAkgKiBhZGp1c3RtZW50cyBhcmUgZG9uZSBieSBwdWxsaW5nIHRoZSBUU0YgZm9yd2FyZCBh
bmQgcG9zc2libHkKIAkgKiByZXdyaXRpbmcgdGhlIGJlYWNvbiB0aW1lcnMuCiAJICovCi0JdGlt
ZXIwID0gYXRoX2hhbF9nZXRuZXh0dGJ0dChhaCk7Ci0JdHNmZGVsdGEgPSAoaW50MzJfdCkoKG5l
eHRzbG90ICUgVFVfVE9fVFNGKEhBTF9CRUFDT05fUEVSSU9EKzEpKSAtIFRVX1RPX1RTRih0aW1l
cjApKTsKKwluZXh0dGJ0dCA9IGF0aF9oYWxfZ2V0bmV4dHRidHQoYWgpOworCXRzZmRlbHRhID0g
KGludDMyX3QpKChuZXh0c2xvdCAlIFRVX1RPX1RTRihIQUxfQkVBQ09OX1BFUklPRCArIDEpKSAt
IG5leHR0YnR0KTsKIAogCURQUklOVEYoc2MsIEFUSF9ERUJVR19URE1BX1RJTUVSLAogCSAgICAi
dHNmZGVsdGEgJWQgYXZnICslZC8tJWRcbiIsIHRzZmRlbHRhLApAQCAtNTcwNSw3ICs1NzAzLDcg
QEAKIAkJVERNQV9TQU1QTEUoc2MtPnNjX2F2Z3RzZmRlbHRhcCwgMCk7CiAJCVRETUFfU0FNUExF
KHNjLT5zY19hdmd0c2ZkZWx0YW0sIDApOwogCX0KLQl0dWRlbHRhID0gbmV4dHNsb3R0dSAtIHRp
bWVyMDsKKwl0dWRlbHRhID0gbmV4dHNsb3R0dSAtIFRTRl9UT19UVShuZXh0dGJ0dCA+PiAzMiwg
bmV4dHRidHQpOwogCiAJLyoKIAkgKiBDb3B5IHNlbmRlcidzIHRpbWV0c3RhbXAgaW50byB0ZG1h
IGllIHNvIHRoZXkgY2FuCkBAIC01NzI0LDEwICs1NzIyLDkgQEAKIAkJJm5pLT5uaV90c3RhbXAu
ZGF0YSwgOCk7CiAjaWYgMAogCURQUklOVEYoc2MsIEFUSF9ERUJVR19URE1BX1RJTUVSLAotCSAg
ICAidHNmICVsbHUgbmV4dHNsb3QgJWxsdSAoJWQsICVkKSBuZXh0c2xvdHR1ICV1IHRpbWVyMCAl
dSAoJWQpXG4iLAorCSAgICAidHNmICVsbHUgbmV4dHNsb3QgJWxsdSAoJWQsICVkKSBuZXh0c2xv
dHR1ICV1IG5leHR0YnR0ICVsbHUgKCVkKVxuIiwKIAkgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykg
dHNmLCAodW5zaWduZWQgbG9uZyBsb25nKSBuZXh0c2xvdCwKLQkgICAgKGludCkobmV4dHNsb3Qg
LSB0c2YpLCB0c2ZkZWx0YSwKLQkgICAgbmV4dHNsb3R0dSwgdGltZXIwLCB0dWRlbHRhKTsKKwkg
ICAgKGludCkobmV4dHNsb3QgLSB0c2YpLCB0c2ZkZWx0YSwgbmV4dHNsb3R0dSwgbmV4dHRidHQs
IHR1ZGVsdGEpOwogI2VuZGlmCiAJLyoKIAkgKiBBZGp1c3QgdGhlIGJlYWNvbiB0aW1lcnMgb25s
eSB3aGVuIHB1bGxpbmcgdGhlbSBmb3J3YXJkCg==
--000e0cd3065c375d3104abde4185--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHjFwoBAK6T2_C9db6KVC%2B9WKV45v2%2BBKp=T%2B7o%2BBm3Ga9fHUQ>