Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Aug 2011 20:01:27 +0800
From:      Kang Yin Su <cantona@cantona.net>
To:        freebsd-wireless@freebsd.org
Subject:   [PATCH] TDMA beacon from slave station
Message-ID:  <CAHjFwoDRFMGRJnCCd9PQcksZ-pEg=SUAL1q-4scOnXjmTQArYQ@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--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--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHjFwoDRFMGRJnCCd9PQcksZ-pEg=SUAL1q-4scOnXjmTQArYQ>