Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Apr 2009 16:21:26 -0700
From:      Maksim Yevmenkin <maksim.yevmenkin@gmail.com>
To:        Iain Hibbert <plunky@rya-online.net>
Cc:        "freebsd-bluetooth@freebsd.org" <freebsd-bluetooth@freebsd.org>
Subject:   Re: libhci update
Message-ID:  <bb4a86c70904171621i5033bcc3w46b24800e20e7106@mail.gmail.com>
In-Reply-To: <1239884118.412855.3144.nullmailer@galant.ukfsn.org>
References:  <49D92E26.2030508@incunabulum.net> <1239264003.862926.638.nullmailer@galant.ukfsn.org> <bb4a86c70904091013l2d7c2b77ic7f6988e6e7709f2@mail.gmail.com> <49DE4E2F.2000805@incunabulum.net> <bb4a86c70904091337x7061ab5uf57bbaff1d5f3197@mail.gmail.com> <49DE6D42.6000004@incunabulum.net> <bb4a86c70904091537x1c6ec085r877d847268b38d3e@mail.gmail.com> <bb4a86c70904151359y3dcf9627u6f30528f07c7252c@mail.gmail.com> <1239871569.560012.1086.nullmailer@galant.ukfsn.org> <1239884118.412855.3144.nullmailer@galant.ukfsn.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--0016361e86c09175d40467c870d7
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

On Thu, Apr 16, 2009 at 5:15 AM, Iain Hibbert <plunky@rya-online.net> wrote:
> On Thu, 16 Apr 2009, Iain Hibbert wrote:
>
>> +int
>> +bt_devfilter(int s, struct bt_devfilter const *new, struct bt_devfilter *old)
>>
>> And finally, the HCI filter is slightly different in NetBSD (I provided
>> independent PKT and EVT filters each of 256 bits) and I'm going to think
>> about that..
>
> Ok, I'm not objecting in priniciple to coupling the two filters together
> but I think that bt_devfilter should be opaque enough that the API does
> not depend about its internal structure. Ie, requiring the caller to
> subtract 1 and manage the bitwise manipulation
>
> +       f.event_mask |= (1 << (NG_HCI_EVENT_INQUIRY_COMPL - 1));
> +       f.event_mask |= (1 << (NG_HCI_EVENT_INQUIRY_RESULT - 1));
>
> is too specific and makes the callers somewhat messy. Can we provide some
> kind of accessor functions to do that?  I include below what I used in
> NetBSD for an example..
>
> Also, at least for events, the full 256 bits is required because there are
> events such as 0xfe (BT Logo) and 0xff (Vendor) that may currently be
> returned and the highest value (in 2.1 spec) is 0x3d, dangerously close to
> the 64 bit limit. Although its not likely that there will be many packet
> types added, it could be that some manufacturers would introduce custom
> packet types with similarly high end values.. (eg for private device
> configuration?)

thanks for the feedback. i'm attaching revisited patch. please take a
look and let me know if this is something you happy with.

thanks,
max

--0016361e86c09175d40467c870d7
Content-Type: text/plain; charset=US-ASCII; name="bluetooth.hci.diff.txt"
Content-Disposition: attachment; filename="bluetooth.hci.diff.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ftni7vzx0

SW5kZXg6IGhjaS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGhjaS5jCShyZXZpc2lvbiAxOTEwMTIpCisrKyBo
Y2kuYwkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDQ0NSBAQAogICogJEZyZWVCU0QkCiAg
Ki8KIAorI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGJsdWV0b290aC5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAj
aW5jbHVkZSA8dW5pc3RkLmg+CiAKK3N0YXRpYyBpbnQgICAgYnRfZGV2YW55X2NiKGludCBzLCBz
dHJ1Y3QgYnRfZGV2aW5mbyBjb25zdCAqZGksIHZvaWQgKnhkZXZuYW1lKTsKIHN0YXRpYyBjaGFy
ICogYnRfZGV2Mm5vZGUgKGNoYXIgY29uc3QgKmRldm5hbWUsIGNoYXIgKm5vZGVuYW1lLCBpbnQg
bm5sZW4pOwogCiBpbnQKK2J0X2Rldm9wZW4oY2hhciBjb25zdCAqZGV2bmFtZSkKK3sKKwlzdHJ1
Y3Qgc29ja2FkZHJfaGNpCWhhOworCWJkYWRkcl90CQliYTsKKwlpbnQJCQlzOworCisJaWYgKGRl
dm5hbWUgPT0gTlVMTCkgeworCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuICgtMSk7CisJfQor
CisJbWVtc2V0KCZoYSwgMCwgc2l6ZW9mKGhhKSk7CisJaGEuaGNpX2xlbiA9IHNpemVvZihoYSk7
CisJaGEuaGNpX2ZhbWlseSA9IEFGX0JMVUVUT09USDsKKworCWlmIChidF9hdG9uKGRldm5hbWUs
ICZiYSkpIHsKKwkJaWYgKCFidF9kZXZuYW1lKGhhLmhjaV9ub2RlLCAmYmEpKQorCQkJcmV0dXJu
ICgtMSk7CisJfSBlbHNlIGlmIChidF9kZXYybm9kZShkZXZuYW1lLCBoYS5oY2lfbm9kZSwKKwkJ
CQkJc2l6ZW9mKGhhLmhjaV9ub2RlKSkgPT0gTlVMTCkgeworCQllcnJubyA9IEVOWElPOworCQly
ZXR1cm4gKC0xKTsKKwl9CisKKwlzID0gc29ja2V0KFBGX0JMVUVUT09USCwgU09DS19SQVcsIEJM
VUVUT09USF9QUk9UT19IQ0kpOworCWlmIChzIDwgMCkKKwkJcmV0dXJuICgtMSk7CisKKwlpZiAo
YmluZChzLCAoc3RydWN0IHNvY2thZGRyICopICZoYSwgc2l6ZW9mKGhhKSkgPCAwIHx8CisJICAg
IGNvbm5lY3QocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNpemVvZihoYSkpIDwgMCkgewor
CQljbG9zZShzKTsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJcmV0dXJuIChzKTsKK30KKworaW50
CitidF9kZXZjbG9zZShpbnQgcykKK3sKKwlyZXR1cm4gKGNsb3NlKHMpKTsKK30KKworaW50Citi
dF9kZXZzZW5kKGludCBzLCB1aW50MTZfdCBvcGNvZGUsIHZvaWQgKnBhcmFtLCBzaXplX3QgcGxl
bikKK3sKKwluZ19oY2lfY21kX3BrdF90CWg7CisJc3RydWN0IGlvdmVjCQlpdlsyXTsKKwlpbnQJ
CQlpdm47CisKKwlpZiAocGxlbiA8IDAgfHwgKHBsZW4gPiAwICYmIHBhcmFtID09IE5VTEwpKSB7
IAorCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJaXZbMF0uaW92X2Jh
c2UgPSAmaDsKKwlpdlswXS5pb3ZfbGVuID0gc2l6ZW9mKGgpOworCWl2biA9IDE7CisKKwloLnR5
cGUgPSBOR19IQ0lfQ01EX1BLVDsKKwloLm9wY29kZSA9IGh0b2xlMTYob3Bjb2RlKTsKKwlpZiAo
cGxlbiA+IDApIHsKKwkJaC5sZW5ndGggPSBwbGVuOworCisJCWl2WzFdLmlvdl9iYXNlID0gcGFy
YW07CisJCWl2WzFdLmlvdl9sZW4gPSBwbGVuOworCQlpdm4gPSAyOworCX0gZWxzZQorCQloLmxl
bmd0aCA9IDA7CisKKwl3aGlsZSAod3JpdGV2KHMsIGl2LCBpdm4pIDwgMCkgeworCQlpZiAoZXJy
bm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKQorCQkJY29udGludWU7CisKKwkJcmV0dXJu
ICgtMSk7CisJfQorCisJcmV0dXJuICgwKTsKK30KKworaW50CitidF9kZXZyZWN2KGludCBzLCB1
aW50OF90ICpidWYsIHNpemVfdCBzaXplLCB0aW1lX3QgdG8pCit7CisJZmRfc2V0CQlyZmQ7CisJ
c3RydWN0IHRpbWV2YWwJdHY7CisJaW50CQluOworCisJaWYgKGJ1ZiA9PSBOVUxMIHx8IHNpemUg
PD0gMCB8fCB0byA8IDApIHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAoLTEpOworCX0K
KworCUZEX1pFUk8oJnJmZCk7CisJRkRfU0VUKHMsICZyZmQpOworCisJdHYudHZfc2VjID0gdG87
CisJdHYudHZfdXNlYyA9IDA7CisKKwl3aGlsZSAoKG4gPSBzZWxlY3QocyArIDEsICZyZmQsIE5V
TEwsIE5VTEwsICZ0dikpIDwgMCkgeworCQlpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09
IEVJTlRSKQorCQkJY29udGludWU7CisKKwkJcmV0dXJuICgtMSk7CisJfQorCisJaWYgKG4gPT0g
MCkgeworCQllcnJubyA9IEVUSU1FRE9VVDsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJYXNzZXJ0
KEZEX0lTU0VUKHMsICZyZmQpKTsKKworCXdoaWxlICgobiA9IHJlYWQocywgYnVmLCBzaXplKSkg
PCAwKSB7CisJCWlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIpCisJCQljb250
aW51ZTsKKworCQlyZXR1cm4gKC0xKTsKKwl9CisKKwlyZXR1cm4gKG4pOworfQorCitpbnQKK2J0
X2RldnJlcShpbnQgcywgc3RydWN0IGJ0X2RldnJlcSAqciwgdGltZV90IHRvKQoreworCXVpbnQ4
X3QJCQkJYnVmWzMyMF07IC8qIG1vcmUgdGhhbiBlbm91Z2ggKi8KKwluZ19oY2lfZXZlbnRfcGt0
X3QJCSplID0gKG5nX2hjaV9ldmVudF9wa3RfdCAqKSBidWY7CisJbmdfaGNpX2NvbW1hbmRfY29t
cGxfZXAJCSpjYyA9IChuZ19oY2lfY29tbWFuZF9jb21wbF9lcCAqKShlKzEpOworCW5nX2hjaV9j
b21tYW5kX3N0YXR1c19lcAkqY3MgPSAobmdfaGNpX2NvbW1hbmRfc3RhdHVzX2VwKikoZSsxKTsK
Kwl0aW1lX3QJCQkJdF9lbmQ7CisJdWludDE2X3QJCQlvcGNvZGU7CisJaW50CQkJCW47CisKKwlp
ZiAocyA8IDAgfHwgciA9PSBOVUxMIHx8IHRvIDwgMCkgeworCQllcnJubyA9IEVJTlZBTDsKKwkJ
cmV0dXJuICgtMSk7CisJfQorCisJaWYgKHItPnJsZW4gPCAwIHx8IChyLT5ybGVuID4gMCAmJiBy
LT5ycGFyYW0gPT0gTlVMTCkpIHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAoLTEpOwor
CX0KKworCW4gPSBidF9kZXZzZW5kKHMsIHItPm9wY29kZSwgci0+Y3BhcmFtLCByLT5jbGVuKTsK
KwlpZiAobiA8IDApCisJCXJldHVybiAoLTEpOworCisJb3Bjb2RlID0gaHRvbGUxNihyLT5vcGNv
ZGUpOworCXRfZW5kID0gdGltZShOVUxMKSArIHRvOworCisJZG8geworCQl0byA9IHRfZW5kIC0g
dGltZShOVUxMKTsKKwkJaWYgKHRvIDwgMCkKKwkJCXRvID0gMDsKKworCQluID0gYnRfZGV2cmVj
dihzLCBidWYsIHNpemVvZihidWYpLCB0byk7CisJCWlmIChuIDwgMCkKKwkJCXJldHVybiAoLTEp
OworCisJCWlmIChuIDwgc2l6ZW9mKCplKSkgeworCQkJZXJybm8gPSBFTVNHU0laRTsKKwkJCXJl
dHVybiAoLTEpOworCQl9CisKKwkJaWYgKGUtPnR5cGUgIT0gTkdfSENJX0VWRU5UX1BLVCkgewor
CQkJZXJybm8gPSBFSU87CisJCQlyZXR1cm4gKC0xKTsKKwkJfQorCisJCW4gLT0gc2l6ZW9mKCpl
KTsKKworCQlzd2l0Y2ggKGUtPmV2ZW50KSB7CisJCWNhc2UgTkdfSENJX0VWRU5UX0NPTU1BTkRf
Q09NUEw6CisJCQlpZiAoY2MtPm9wY29kZSA9PSBvcGNvZGUpIHsKKwkJCQluIC09IHNpemVvZigq
Y2MpOworCisJCQkJaWYgKHItPnJsZW4gPj0gbikgeworCQkJCQlyLT5ybGVuID0gbjsKKwkJCQkJ
bWVtY3B5KHItPnJwYXJhbSwgY2MgKyAxLCByLT5ybGVuKTsKKwkJCQl9CisKKwkJCQlyZXR1cm4g
KDApOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBOR19IQ0lfRVZFTlRfQ09NTUFORF9TVEFU
VVM6CisJCQlpZiAoY3MtPm9wY29kZSA9PSBvcGNvZGUpIHsKKwkJCQlpZiAoci0+ZXZlbnQgIT0g
TkdfSENJX0VWRU5UX0NPTU1BTkRfU1RBVFVTKSB7CisJCQkJCWlmIChjcy0+c3RhdHVzICE9IDAp
IHsKKwkJCQkJCWVycm5vID0gRUlPOworCQkJCQkJcmV0dXJuICgtMSk7CisJCQkJCX0KKwkJCQl9
IGVsc2UgeworCQkJCQlpZiAoci0+cmxlbiA+PSBuKSB7CisJCQkJCQlyLT5ybGVuID0gbjsKKwkJ
CQkJCW1lbWNweShyLT5ycGFyYW0sIGNzLCByLT5ybGVuKTsKKwkJCQkJfQorCisJCQkJCXJldHVy
biAoMCk7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWlmIChlLT5l
dmVudCA9PSByLT5ldmVudCkgeworCQkJCWlmIChyLT5ybGVuID49IG4pIHsKKwkJCQkJci0+cmxl
biA9IG47CisJCQkJCW1lbWNweShyLT5ycGFyYW0sIGUgKyAxLCByLT5ybGVuKTsKKwkJCQl9CisK
KwkJCQlyZXR1cm4gKDApOworCQkJfQorCQkJYnJlYWs7CisJCX0KKwl9IHdoaWxlICh0byA+IDAp
OworCisJZXJybm8gPSBFVElNRURPVVQ7CisKKwlyZXR1cm4gKC0xKTsKK30KKworaW50CitidF9k
ZXZmaWx0ZXIoaW50IHMsIHN0cnVjdCBidF9kZXZmaWx0ZXIgY29uc3QgKm5ldywgc3RydWN0IGJ0
X2RldmZpbHRlciAqb2xkKQoreworCXN0cnVjdCBuZ19idHNvY2tldF9oY2lfcmF3X2ZpbHRlcglm
OworCXNvY2tsZW5fdAkJCQlsZW47CisKKwlpZiAobmV3ID09IE5VTEwgJiYgb2xkID09IE5VTEwp
IHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAoLTEpOworCX0KKworCWlmIChvbGQgIT0g
TlVMTCkgeworCQlsZW4gPSBzaXplb2YoZik7CisJCWlmIChnZXRzb2Nrb3B0KHMsIFNPTF9IQ0lf
UkFXLCBTT19IQ0lfUkFXX0ZJTFRFUiwgJmYsICZsZW4pIDwgMCkKKwkJCXJldHVybiAoLTEpOwor
CisJCW1lbXNldChvbGQsIDAsIHNpemVvZigqb2xkKSk7CisJCW1lbWNweShvbGQtPnBhY2tldF9t
YXNrLCAmZi5wYWNrZXRfbWFzaywKKwkJCXNpemVvZihvbGQtPnBhY2tldF9tYXNrKSk7CisJCW1l
bWNweShvbGQtPmV2ZW50X21hc2ssICZmLmV2ZW50X21hc2ssCisJCQlzaXplb2Yob2xkLT5ldmVu
dF9tYXNrKSk7CisJfQorCisJaWYgKG5ldyAhPSBOVUxMKSB7CisJCW1lbXNldCgmZiwgMCwgc2l6
ZW9mKGYpKTsKKwkJbWVtY3B5KCZmLnBhY2tldF9tYXNrLCBuZXctPnBhY2tldF9tYXNrLCBzaXpl
b2YoZi5wYWNrZXRfbWFzaykpOworCQltZW1jcHkoJmYuZXZlbnRfbWFzaywgbmV3LT5ldmVudF9t
YXNrLCBzaXplb2YoZi5ldmVudF9tYXNrKSk7CisKKwkJbGVuID0gc2l6ZW9mKGYpOworCQlpZiAo
c2V0c29ja29wdChzLCBTT0xfSENJX1JBVywgU09fSENJX1JBV19GSUxURVIsICZmLCBsZW4pIDwg
MCkKKwkJCXJldHVybiAoLTEpOworCX0KKworCXJldHVybiAoMCk7Cit9CisKK3ZvaWQKK2J0X2Rl
dmZpbHRlcl9wa3Rfc2V0KHN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciwgaW50IHR5cGUpCit7
CisJYml0X3NldChmaWx0ZXItPnBhY2tldF9tYXNrLCB0eXBlIC0gMSk7Cit9CisKK3ZvaWQKK2J0
X2RldmZpbHRlcl9wa3RfY2xyKHN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciwgaW50IHR5cGUp
Cit7CisJYml0X2NsZWFyKGZpbHRlci0+cGFja2V0X21hc2ssIHR5cGUgLSAxKTsKK30KKworaW50
CitidF9kZXZmaWx0ZXJfcGt0X3RzdChzdHJ1Y3QgYnRfZGV2ZmlsdGVyIGNvbnN0ICpmaWx0ZXIs
IGludCB0eXBlKQoreworCXJldHVybiAoYml0X3Rlc3QoZmlsdGVyLT5wYWNrZXRfbWFzaywgdHlw
ZSAtIDEpKTsKK30KKwordm9pZAorYnRfZGV2ZmlsdGVyX2V2dF9zZXQoc3RydWN0IGJ0X2RldmZp
bHRlciAqZmlsdGVyLCBpbnQgZXZlbnQpCit7CisJYml0X3NldChmaWx0ZXItPmV2ZW50X21hc2ss
IGV2ZW50IC0gMSk7Cit9CisKK3ZvaWQKK2J0X2RldmZpbHRlcl9ldnRfY2xyKHN0cnVjdCBidF9k
ZXZmaWx0ZXIgKmZpbHRlciwgaW50IGV2ZW50KQoreworCWJpdF9jbGVhcihmaWx0ZXItPmV2ZW50
X21hc2ssIGV2ZW50IC0gMSk7Cit9CisKK2ludAorYnRfZGV2ZmlsdGVyX2V2dF90c3Qoc3RydWN0
IGJ0X2RldmZpbHRlciBjb25zdCAqZmlsdGVyLCBpbnQgZXZlbnQpCit7CisJcmV0dXJuIChiaXRf
dGVzdChmaWx0ZXItPmV2ZW50X21hc2ssIGV2ZW50IC0gMSkpOworfQorCitpbnQKK2J0X2Rldmlu
cXVpcnkoY2hhciBjb25zdCAqZGV2bmFtZSwgdGltZV90IGxlbmd0aCwgaW50IG51bV9yc3AsCisJ
CXN0cnVjdCBidF9kZXZpbnF1aXJ5ICoqaWkpCit7CisJdWludDhfdAkJCQlidWZbMzIwXTsKKwlj
aGFyCQkJCV9kZXZuYW1lW0hDSV9ERVZOQU1FX1NJWkVdOworCXN0cnVjdCBidF9kZXZmaWx0ZXIJ
CWY7CisJbmdfaGNpX2lucXVpcnlfY3AJCSpjcCA9IChuZ19oY2lfaW5xdWlyeV9jcCAqKSBidWY7
CisJbmdfaGNpX2V2ZW50X3BrdF90CQkqZSA9IChuZ19oY2lfZXZlbnRfcGt0X3QgKikgYnVmOwor
CW5nX2hjaV9pbnF1aXJ5X3Jlc3VsdF9lcAkqZXAgPSAobmdfaGNpX2lucXVpcnlfcmVzdWx0X2Vw
ICopKGUrMSk7CisJbmdfaGNpX2lucXVpcnlfcmVzcG9uc2UJCSppcjsKKwlzdHJ1Y3QgYnRfZGV2
aW5xdWlyeQkJKmk7CisJaW50CQkJCXMsIG47CisJdGltZV90CQkJCXRvOworCisJaWYgKGlpID09
IE5VTEwpIHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAoLTEpOworCX0KKworCWlmIChk
ZXZuYW1lID09IE5VTEwpIHsKKwkJbWVtc2V0KF9kZXZuYW1lLCAwLCBzaXplb2YoX2Rldm5hbWUp
KTsKKwkJZGV2bmFtZSA9IF9kZXZuYW1lOworCisJCW4gPSBidF9kZXZlbnVtKGJ0X2RldmFueV9j
YiwgX2Rldm5hbWUpOworCQlpZiAobiA8PSAwKSB7CisJCQlpZiAobiA9PSAwKQorCQkJCSppaSA9
IE5VTEw7CisKKwkJCXJldHVybiAobik7CisJCX0KKwl9CisKKwlzID0gYnRfZGV2b3BlbihkZXZu
YW1lKTsKKwlpZiAocyA8IDApCisJCXJldHVybiAoLTEpOworCisJaWYgKGJ0X2RldmZpbHRlcihz
LCBOVUxMLCAmZikgPCAwKSB7CisJCWJ0X2RldmNsb3NlKHMpOworCQlyZXR1cm4gKC0xKTsKKwl9
CisKKwlidF9kZXZmaWx0ZXJfZXZ0X3NldCgmZiwgTkdfSENJX0VWRU5UX0lOUVVJUllfQ09NUEwp
OworCWJ0X2RldmZpbHRlcl9ldnRfc2V0KCZmLCBOR19IQ0lfRVZFTlRfSU5RVUlSWV9SRVNVTFQp
OworCisJaWYgKGJ0X2RldmZpbHRlcihzLCAmZiwgTlVMTCkgPCAwKSB7CisJCWJ0X2RldmNsb3Nl
KHMpOworCQlyZXR1cm4gKC0xKTsKKwl9CisKKwkvKiBBbHdheXMgdXNlIEdJQUMgTEFQICovCisJ
Y3AtPmxhcFswXSA9IDB4MzM7CisJY3AtPmxhcFsxXSA9IDB4OGI7CisJY3AtPmxhcFsyXSA9IDB4
OWU7CisKKwkvKiBDYWxjdWxhdGUgaW5xdWlyZSBsZW5ndGggaW4gMS4yOCBzZWNvbmQgdW5pdHMg
Ki8KKwl0byA9ICh0aW1lX3QpICgoZG91YmxlKSBsZW5ndGggLyAxLjI4KTsKKwlpZiAodG8gPD0g
MCkKKwkJY3AtPmlucXVpcnlfbGVuZ3RoID0gNDsJCS8qIDUuMTIgc2Vjb25kcyAqLworCWVsc2Ug
aWYgKHRvID4gMjU0KQorCQljcC0+aW5xdWlyeV9sZW5ndGggPSAyNTU7CS8qIDMyNi40MCBzZWNv
bmRzICovCisJZWxzZQorCQljcC0+aW5xdWlyeV9sZW5ndGggPSB0byArIDE7CisKKwl0byA9ICh0
aW1lX3QpKChkb3VibGUpIGNwLT5pbnF1aXJ5X2xlbmd0aCAqIDEuMjgpICsgMTsKKworCWlmIChu
dW1fcnNwIDw9IDAgfHwgbnVtX3JzcCA+IDI1NSkKKwkJbnVtX3JzcCA9IDg7CisJY3AtPm51bV9y
ZXNwb25zZXMgPSAodWludDhfdCkgbnVtX3JzcDsKKworCWkgPSAqaWkgPSBjYWxsb2MobnVtX3Jz
cCwgc2l6ZW9mKHN0cnVjdCBidF9kZXZpbnF1aXJ5KSk7CisJaWYgKGkgPT0gTlVMTCkgeworCQli
dF9kZXZjbG9zZShzKTsKKwkJZXJybm8gPSBFTk9NRU07CisJCXJldHVybiAoLTEpOworCX0KKwor
CWlmIChidF9kZXZzZW5kKHMsCisJCU5HX0hDSV9PUENPREUoTkdfSENJX09HRl9MSU5LX0NPTlRS
T0wsIE5HX0hDSV9PQ0ZfSU5RVUlSWSksCisJCQljcCwgc2l6ZW9mKCpjcCkpIDwgMCkgeworCQlm
cmVlKGkpOworCQlidF9kZXZjbG9zZShzKTsKKwkJcmV0dXJuICgtMSk7CisJfQorCit3YWl0X2Zv
cl9tb3JlOgorCisJbiA9IGJ0X2RldnJlY3YocywgYnVmLCBzaXplb2YoYnVmKSwgdG8pOworCWlm
IChuIDwgMCkgeworCQlmcmVlKGkpOworCQlidF9kZXZjbG9zZShzKTsKKwkJcmV0dXJuICgtMSk7
CisJfQorCisJaWYgKG4gPCBzaXplb2YobmdfaGNpX2V2ZW50X3BrdF90KSkgeworCQlmcmVlKGkp
OworCQlidF9kZXZjbG9zZShzKTsKKwkJZXJybm8gPSBFSU87CisJCXJldHVybiAoLTEpOworCX0K
KworCXN3aXRjaCAoZS0+ZXZlbnQpIHsKKwljYXNlIE5HX0hDSV9FVkVOVF9JTlFVSVJZX0NPTVBM
OgorCQlicmVhazsKKworCWNhc2UgTkdfSENJX0VWRU5UX0lOUVVJUllfUkVTVUxUOgorCQlpciA9
IChuZ19oY2lfaW5xdWlyeV9yZXNwb25zZSAqKShlcCArIDEpOworCisjdW5kZWYJTUlOCisjZGVm
aW5lCU1JTihhLCBiKQkoKChhKSA8IChiKSk/IChhKSA6IChiKSkKKworCQlmb3IgKG4gPSAwOyBu
IDwgTUlOKGVwLT5udW1fcmVzcG9uc2VzLCBudW1fcnNwKTsgbiArKykgeworCQkJYmRhZGRyX2Nv
cHkoJmktPmJkYWRkciwgJmlyLT5iZGFkZHIpOworCQkJaS0+cHNjYW5fcmVwX21vZGUgPSBpci0+
cGFnZV9zY2FuX3JlcF9tb2RlOworCQkJaS0+cHNjYW5fcGVyaW9kX21vZGUgPSBpci0+cGFnZV9z
Y2FuX3BlcmlvZF9tb2RlOworCQkJbWVtY3B5KGktPmRldl9jbGFzcywgaXItPnVjbGFzcywgc2l6
ZW9mKGktPmRldl9jbGFzcykpOworCQkJaS0+Y2xvY2tfb2Zmc2V0ID0gbGUxNnRvaChpci0+Y2xv
Y2tfb2Zmc2V0KTsKKworCQkJaXIgKys7CisJCQlpICsrOworCQkJbnVtX3JzcCAtLTsKKwkJfQor
CQkvKiBGQUxMVEhST1VHSCAqLworCisJZGVmYXVsdDoKKwkJZ290byB3YWl0X2Zvcl9tb3JlOwor
CQkvKiBOT1QgUkVBQ0hFRCAqLworCX0KKworCWJ0X2RldmNsb3NlKHMpOworCQkKKwlyZXR1cm4g
KGkgLSAqaWkpOworfQorCitpbnQKIGJ0X2RldmluZm8oc3RydWN0IGJ0X2RldmluZm8gKmRpKQog
ewogCXVuaW9uIHsKQEAgLTUzLDYgKzQ4Myw3IEBACiAJCXN0cnVjdCBuZ19idHNvY2tldF9oY2lf
cmF3X25vZGVfZGVidWcJCXI4OwogCX0JCQkJCQlycDsKIAlzdHJ1Y3Qgc29ja2FkZHJfaGNpCQkJ
CWhhOworCXNvY2tsZW5fdAkJCQkJaGFsZW47CiAJaW50CQkJCQkJcywgcnZhbDsKIAogCWlmIChk
aSA9PSBOVUxMKSB7CkBAIC02MCwyNyArNDkxLDE0IEBACiAJCXJldHVybiAoLTEpOwogCX0KIAot
CW1lbXNldCgmaGEsIDAsIHNpemVvZihoYSkpOwotCWhhLmhjaV9sZW4gPSBzaXplb2YoaGEpOwot
CWhhLmhjaV9mYW1pbHkgPSBBRl9CTFVFVE9PVEg7Ci0KLQlpZiAoYnRfYXRvbihkaS0+ZGV2bmFt
ZSwgJnJwLnIxLmJkYWRkcikpIHsKLQkJaWYgKCFidF9kZXZuYW1lKGhhLmhjaV9ub2RlLCAmcnAu
cjEuYmRhZGRyKSkKLQkJCXJldHVybiAoLTEpOwotCX0gZWxzZSBpZiAoYnRfZGV2Mm5vZGUoZGkt
PmRldm5hbWUsIGhhLmhjaV9ub2RlLAotCQkJCQlzaXplb2YoaGEuaGNpX25vZGUpKSA9PSBOVUxM
KSB7Ci0JCWVycm5vID0gRU5YSU87Ci0JCXJldHVybiAoLTEpOwotCX0KLQotCXMgPSBzb2NrZXQo
UEZfQkxVRVRPT1RILCBTT0NLX1JBVywgQkxVRVRPT1RIX1BST1RPX0hDSSk7CisJcyA9IGJ0X2Rl
dm9wZW4oZGktPmRldm5hbWUpOwogCWlmIChzIDwgMCkKIAkJcmV0dXJuICgtMSk7CiAKIAlydmFs
ID0gLTE7CiAKLQlpZiAoYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopICZoYSwgc2l6ZW9mKGhh
KSkgPCAwIHx8Ci0JICAgIGNvbm5lY3QocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNpemVv
ZihoYSkpIDwgMCkKKwloYWxlbiA9IHNpemVvZihoYSk7CisJaWYgKGdldHNvY2tuYW1lKHMsIChz
dHJ1Y3Qgc29ja2FkZHIgKikgJmhhLCAmaGFsZW4pIDwgMCkKIAkJZ290byBiYWQ7CiAJc3RybGNw
eShkaS0+ZGV2bmFtZSwgaGEuaGNpX25vZGUsIHNpemVvZihkaS0+ZGV2bmFtZSkpOwogCkBAIC0x
MzgsNyArNTU2LDcgQEAKIAogCXJ2YWwgPSAwOwogYmFkOgotCWNsb3NlKHMpOworCWJ0X2RldmNs
b3NlKHMpOwogCiAJcmV0dXJuIChydmFsKTsKIH0KQEAgLTIwNSw2ICs2MjMsMTMgQEAKIAlyZXR1
cm4gKGNvdW50KTsKIH0KIAorc3RhdGljIGludAorYnRfZGV2YW55X2NiKGludCBzLCBzdHJ1Y3Qg
YnRfZGV2aW5mbyBjb25zdCAqZGksIHZvaWQgKnhkZXZuYW1lKQoreworCXN0cmxjcHkoKGNoYXIg
KikgeGRldm5hbWUsIGRpLT5kZXZuYW1lLCBIQ0lfREVWTkFNRV9TSVpFKTsKKwlyZXR1cm4gKDEp
OworfQorCiBzdGF0aWMgY2hhciAqCiBidF9kZXYybm9kZShjaGFyIGNvbnN0ICpkZXZuYW1lLCBj
aGFyICpub2RlbmFtZSwgaW50IG5ubGVuKQogewpJbmRleDogYmx1ZXRvb3RoLjMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gYmx1ZXRvb3RoLjMJKHJldmlzaW9uIDE5MTAxMikKKysrIGJsdWV0b290aC4zCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAuXCIgJElkOiBibHVldG9vdGguMyx2IDEuNSAy
MDAzLzA1LzIwIDIzOjA0OjMwIG1heCBFeHAgJAogLlwiICRGcmVlQlNEJAogLlwiCi0uRGQgRmVi
cnVhcnkgMTMsIDIwMDkKKy5EZCBBcHJpbCA5LCAyMDA5CiAuRHQgQkxVRVRPT1RIIDMKIC5Pcwog
LlNoIE5BTUUKQEAgLTQxLDYgKzQxLDIzIEBACiAuTm0gYnRfZW5kcHJvdG9lbnQgLAogLk5tIGJ0
X2F0b24gLAogLk5tIGJ0X250b2EgLAorLk5tIGJ0X2RldmFkZHIgLAorLk5tIGJ0X2Rldm5hbWUg
LAorLk5tIGJ0X2RldmluZm8gLAorLk5tIGJ0X2RldmVudW0gLAorLk5tIGJ0X2Rldm9wZW4gLAor
Lk5tIGJ0X2RldmNsb3NlICwKKy5ObSBidF9kZXZzZW5kICwKKy5ObSBidF9kZXZyZWN2ICwKKy5O
bSBidF9kZXZyZXEgLAorLk5tIGJ0X2RldmZpbHRlciAsCisuTm0gYnRfZGV2ZmlsdGVyX3BrdF9z
ZXQgLAorLk5tIGJ0X2RldmZpbHRlcl9wa3RfY2xyICwKKy5ObSBidF9kZXZmaWx0ZXJfcGt0X3Rz
dCAsCisuTm0gYnRfZGV2ZmlsdGVyX2V2dF9zZXQgLAorLk5tIGJ0X2RldmZpbHRlcl9ldnRfY2xy
ICwKKy5ObSBidF9kZXZmaWx0ZXJfZXZ0X3RzdCAsCisuTm0gYnRfZGV2aW5xdWlyeSAsCiAuTm0g
YmRhZGRyX3NhbWUgLAogLk5tIGJkYWRkcl9hbnkgLAogLk5tIGJkYWRkcl9jb3B5CkBAIC04NCw2
ICsxMDEsMzIgQEAKIC5GdCBpbnQKIC5GbiBidF9kZXZlbnVtICJidF9kZXZlbnVtX2NiX3QgKmNi
IiAidm9pZCAqYXJnIgogLkZ0IGludAorLkZuIGJ0X2Rldm9wZW4gImNoYXIgY29uc3QgKmRldm5h
bWUiCisuRnQgaW50CisuRm4gYnRfZGV2Y2xvc2UgImludCBzIgorLkZ0IGludAorLkZuIGJ0X2Rl
dnNlbmQgImludCBzIiAidWludDE2X3Qgb3Bjb2RlIiAidm9pZCAqcGFyYW0iICJzaXplX3QgcGxl
biIKKy5GdCBpbnQKKy5GbiBidF9kZXZyZWN2ICJpbnQgcyIgInVpbnQ4X3QgKmJ1ZiIgInNpemVf
dCBzaXplIiAidGltZV90IHRvIgorLkZ0IGludAorLkZuIGJ0X2RldnJlcSAiaW50IHMiICJzdHJ1
Y3QgYnRfZGV2cmVxICpyIiAidGltZV90IHRvIgorLkZ0IGludAorLkZuIGJ0X2RldmZpbHRlciAi
aW50IHMiICJzdHJ1Y3QgYnRfZGV2ZmlsdGVyIGNvbnN0ICpuZXciICJzdHJ1Y3QgYnRfZGV2Zmls
dGVyICpvbGQiCisuRnQgdm9pZAorLkZuIGJ0X2RldmZpbHRlcl9wa3Rfc2V0ICJzdHJ1Y3QgYnRf
ZGV2ZmlsdGVyICpmaWx0ZXIiICJpbnQgdHlwZSIKKy5GdCB2b2lkCisuRm4gYnRfZGV2ZmlsdGVy
X3BrdF9jbHQgInN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciIgImludCB0eXBlIgorLkZ0IGlu
dAorLkZuIGJ0X2RldmZpbHRlcl9wa3RfdHN0ICJzdHJ1Y3QgYnRfZGV2ZmlsdGVyIGNvbnN0ICpm
aWx0ZXIiICJpbnQgdHlwZSIKKy5GdCB2b2lkCisuRm4gYnRfZGV2ZmlsdGVyX2V2dF9zZXQgInN0
cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciIgImludCBldmVudCIKKy5GdCB2b2lkCisuRm4gYnRf
ZGV2ZmlsdGVyX2V2dF9jbHQgInN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciIgImludCBldmVu
dCIKKy5GdCBpbnQKKy5GbiBidF9kZXZmaWx0ZXJfZXZ0X3RzdCAic3RydWN0IGJ0X2RldmZpbHRl
ciBjb25zdCAqZmlsdGVyIiAiaW50IGV2ZW50IgorLkZ0IGludAorLkZuIGJ0X2RldmlucXVpcnkg
ImNoYXIgY29uc3QgKmRldm5hbWUiICJ0aW1lX3QgbGVuZ3RoIiAiaW50IG51bV9yc3AiICJzdHJ1
Y3QgYnRfZGV2aW5xdWlyeSAqKmlpIgorLkZ0IGludAogLkZuIGJkYWRkcl9zYW1lICJjb25zdCBi
ZGFkZHJfdCAqYSIgImNvbnN0IGJkYWRkcl90ICpiIgogLkZ0IGludAogLkZuIGJkYWRkcl9hbnkg
ImNvbnN0IGJkYWRkcl90ICphIgpAQCAtMzExLDYgKzM1NCwyMTEgQEAKIG9yIC0xIGlmIGFuIGVy
cm9yIG9jY3VycmVkLgogLlBwCiBUaGUKKy5GbiBidF9kZXZvcGVuCitmdW5jdGlvbiBvcGVucyBC
bHVldG9vdGggZGV2aWNlIHdpdGggdGhlIGdpdmVuCisuRmEgZGV2bmFtZQorYW5kIHJldHVybnMg
Y29ubmVjdGVkIGFuZCBib3VuZAorLkR2IEhDSQorc29ja2V0LgorVGhlIGZ1bmN0aW9uIHJldHVy
bnMgLTEgaWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkLgorLlBwCitUaGUKKy5GbiBidF9kZXZjbG9z
ZQorY2xvc2VzIHBhc3NlZAorLkR2IEhDSQorc29ja2V0CisuRmEgcyAsCitwcmV2aW91c2x5IG9i
dGFpbmVkIHdpdGgKKy5YciBidF9kZXZvcGVuIDMgLgorLlBwCitUaGUKKy5GbiBidF9kZXZzZW5k
CitmdW5jdGlvbiBzZW5kcyBCbHVldG9vdGgKKy5EdiBIQ0kKK2NvbW1hbmQgd2l0aCB0aGUgZ2l2
ZW4KKy5GYSBvcGNvZGUKK3RvIHRoZSBwcm92aWRlZCBzb2NrZXQKKy5GYSBzICwKK3ByZXZpb3Vz
bHkgb2J0YWluZWQgd2l0aAorLlhyIGJ0X2Rldm9wZW4gMyAuCitUaGUKKy5GYSBvcGNvZGUKK3Bh
cmFtZXRlciBpcyBleHBwZWN0ZWQgdG8gYmUgaW4gdGhlIGhvc3QgYnl0ZSBvcmRlci4KK1RoZQor
LkZhIHBhcmFtCithbmQKKy5GYSBwbGVuCitwYXJhbWV0ZXJzIHNwZWNpZnkgY29tbWFuZCBwYXJh
bWV0ZXJzLgorVGhlIGZ1bmN0aW9uIHJldHVybnMgMCBvbiBzdWNjZXNzLAorb3IgLTEgaWYgYW4g
ZXJyb3Igb2NjdXJyZWQuCisuUHAKK1RoZQorLkZuIGJ0X2RldnJlY3YKK2Z1bmN0aW9uIHJlY2Vp
dmVzIG9uZSBCbHVldG9vdGgKKy5EdiBIQ0kKK2V2ZW50IHBhY2tldCBmcm9tIHRoZSBzb2NrZXQK
Ky5GYSBzICwKK3ByZXZpb3VzbHkgb2J0YWluZWQgd2l0aAorLlhyIGJ0X2Rldm9wZW4gMyAuCitU
aGUgZXZlbnQgcGFja2V0IGlzIHBsYWNlZCBpbnRvIHRoZSBwcm92aWRlZCBidWZmZXIKKy5GYSBi
dWYKK29mIHNpemUKKy5GYSBzaXplIC4KK1RoZQorLkZhIHRvCitwYXJhbWV0ZXIgc3BlY2lmaWVz
IHJlY2VpdmUgdGltZW91dCBpbiBzZWNvbmRzLgorVGhlIGZ1bmN0aW9uIHJldHVybnMgdG90YWwg
bnVtYmVyIG9mIGJ5dGVzIHJlY2V2aWVkLAorb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisu
UHAKK1RoZQorLkZuIGJ0X2RldnJlcQorZnVuY3Rpb24gbWFrZXMgQmx1ZXRvb3RoCisuRHYgSENJ
CityZXF1ZXN0IHRvIHRoZSBzb2NrZXQKKy5GYSBzICwKK3ByZXZpb3VzbHkgb2J0YWluZWQgd2l0
aAorLlhyIGJ0X2Rldm9wZW4gMyAuCitUaGUgZnVuY3Rpb24gd2lsbCBzZW5kIHRoZSBzcGVjaWZp
ZWQgY29tbWFuZCBhbmQgd2lsbCB3YWl0IGZvciB0aGUgc3BlY2lmaWVkCitldmVudCwKK29yIHRp
bWVvdXQKKy5GYSB0bworc2Vjb25kcyB0byBvY2N1ci4KK1RoZQorLlZ0IGJ0X2RldnJlcQorc3Ry
dWN0dXJlIGlzIGRlZmluZWQgYXMgZm9sbG93cworLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50
CitzdHJ1Y3QgYnRfZGV2cmVxCit7CisgICAgICAgIHVpbnQxNl90ICAgICAgICBvcGNvZGU7Cisg
ICAgICAgIHVpbnQxNl90ICAgICAgICBldmVudDsKKyAgICAgICAgdm9pZCAgICAgICAgICAgICpj
cGFyYW07CisgICAgICAgIGludCAgICAgICAgICAgICBjbGVuOworICAgICAgICB2b2lkICAgICAg
ICAgICAgKnJwYXJhbTsKKyAgICAgICAgaW50ICAgICAgICAgICAgIHJsZW47Cit9OworLkVkCisu
UHAKK1RoZQorLkZhIG9wY29kZQorZmllbGQgc3BlY2lmaWVzIHRoZSBjb21tYW5kIGFuZCBpcyBl
eHBlY3RlZCB0byBiZSBpbiB0aGUgaG9zdCBieXRlIG9yZGVyLgorVGhlCisuRmEgY3BhcmFtCith
bmQKKy5GYSBjbGVuCitmaWVsZHMgc3BlY2lmeSBjb21tYW5kIHBhcmFtZXRlcnMgZGF0YSBhbmQg
Y29tbWFuZCBwYXJhbWV0ZXJzIGRhdGEgc2l6ZQorcmVzcGVjdGl2ZWx5LgorVGhlCisuRmEgZXZl
bnQKK2ZpZWxkIHNwZWNpZmllcyB3aGljaCBCbHVldG9vdGgKKy5EdiBIQ0kKK2V2ZW50IElEIHRo
ZSBmdW5jdGlvbiBzaG91bGQgd2FpdCBmb3IuCitUaGUKKy5GYSBycGFyYW0KK2FuZAorLkZhIHJs
ZW4KK3BhcmFtZXRlcnMgc3BlY2lmeSBidWZmZXIgYW5kIGJ1ZmZlciBzaXplIHJlc3BlY3RpdmVs
eSB3aGVyZSByZXR1cm4KK3BhcmFtZXRlcnMgc2hvdWxkIGJlIHBsYWNlZC4KK1RoZSBmdW5jdGlv
biByZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisuUHAK
K1RoZQorLkZuIGJ0X2RldmZpbHRlcgorY29udHJvbHMgdGhlIGxvY2FsCisuRHYgSENJCitmaWx0
ZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzb2NrZXQKKy5GYSBzICwKK3ByZXZpb3VzbHkgb2J0YWlu
ZWQgd2l0aAorLlhyIGJ0X2Rldm9wZW4gMyAuCitGaWx0ZXJpbmcgY2FuIGJlIGRvbmUgb24gcGFj
a2V0IHR5cGVzLCBpLmUuCisuRHYgQUNMICwKKy5EdiBTQ08gb3IKKy5EdiBIQ0kKK2V2ZW50IHBh
Y2tldHMsIGFuZCwgaW4gYWRkaXRpb24sIG9uCisuRHYgSENJCitldmVudCBJRHMuCitCZWZvcmUg
YXBwbHlpbmcKKy5GYSBuZXcKK2ZpbHRlciAoaWYgcHJvdmlkZWQpIHRoZSBmdW5jdGlvbiB3aWxs
IHRyeSB0byBvYnRhaW4gY3VycmVudCBmaWx0ZXIKK2Zyb20gdGhlIHNvY2tldAorLkZhIHMKK2Fu
ZCBwbGFjZSBpdCBpbnRvIHRoZQorLkZhIG9sZAorcGFyYW1ldGVyIChpZiBwcm92aWRlZCkuCitU
aGUgZnVuY3Rpb24gcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3Vy
cmVkLgorLlBwCitUaGUKKy5GbiBidF9kZXZmaWx0ZXJfcGt0X3NldCAsCisuRm4gYnRfZGV2Zmls
dGVyX3BrdF9jbHIgCithbmQKKy5GbiBidF9kZXZmaWx0ZXJfcGt0X3RzdAorZnVuY3Rpb25zIGNh
biBiZSB1c2VkIHRvIG1vZGlmeSBhbmQgdGVzdAorLkR2IEhDSQorZmlsdGVyCisuRmEgZmlsdGVy
IC4KK1RoZQorLkZhIHR5cGUKK3BhcmFtZXRlciBzcGVjaWZpZXMKKy5EdiBIQ0kKK3BhY2tldCB0
eXBlLgorLlBwCitUaGUKKy5GbiBidF9kZXZmaWx0ZXJfZXZ0X3NldCAsCisuRm4gYnRfZGV2Zmls
dGVyX2V2dF9jbHIgCithbmQKKy5GbiBidF9kZXZmaWx0ZXJfZXZ0X3RzdAorZnVuY3Rpb25zIGNh
biBiZSB1c2VkIHRvIG1vZGlmeSBhbmQgdGVzdAorLkR2IEhDSQorZXZlbnQgZmlsdGVyCisuRmEg
ZmlsdGVyIC4KK1RoZQorLkZhIGV2ZW50CitwYXJhbWV0ZXIgc3BlY2lmaWVzCisuRHYgSENJCitl
dmVudCBJRC4KKy5QcAorVGhlCisuRm4gYnRfZGV2aW5xdWlyeQorZnVuY3Rpb24gcGVyZm9ybXMg
Qmx1ZXRvb3RoIGlucXVpcnkuCitUaGUKKy5GYSBkZXZuYW1lCitwYXJhbWV0ZXIgc3BlY2lmaWVz
IHdoaWNoIGxvY2FsIEJsdWV0b290aCBkZXZpY2Ugc2hvdWxkIHBlcmZvcm0gYW4gaW5xdWlyeS4K
K0lmIG5vdCBzZWNpZmllZCwgaS5lLgorLkR2IE5VTEwgLAordGhlbiBmaXJzdCBhdmFpbGFibGUg
ZGV2aWNlIHdpbGwgYmUgdXNlZC4KK1RoZQorLkZhIGxlbmd0aAorcGFyYW1ldGVycyBzcGVjaWZp
ZXMgdGhlIHRvdGFsIGxlbmd0aCBvZiBhbiBpbnF1aXJ5IGluIHNlY29uZHMuCitJZiBub3Qgc3Bl
Y2lmaWVkLCBpLmUuIDAsIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkLgorVGhlCisuRmEgbnVt
X3JzcAorcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlc3BvbnNlcyB0aGF0IGNh
biBiZSByZWNlaXZlZCBiZWZvcmUKK3RoZSBpbnF1aXJ5IGlzIGhhbHRlZC4KK0lmIG5vdCBzcGVj
aWZpZWQsIGkuZS4gMCwgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHVzZWQuCitUaGUKKy5GYSBpaQor
cGFyYW1ldGVyIHNwZWNpZmllcyB3aGVyZSB0byBwbGFjZSBpbnF1aXJ5IHJlc3VsdHMuCitPbiBz
dWNjZXNzLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gdG90YWwgbnVtYmVyIG9mIGlucXVpcnkg
cmVzdWx0cywKK3dpbGwgYWxsb2NhdGUgYnVmZmVyIHRvIHN0b3JlIGFsbCB0aGUgaW5xdWlyeSBy
ZXN1bHRzIGFuZAord2lsbCByZXR1cm4gcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIGJ1ZmZlciBp
biB0aGUKKy5GYSBpaQorcGFyYW1ldGVyLgorSXQgaXMgdXAgdG8gdGhlIGNhbGxlciBvZiB0aGUg
ZnVuY3Rpb24gdG8gZGlzcG9zZSBvZiB0aGUgYnVmZmVyLgorVGhlIGZ1bmN0aW9uIHJldHVybnMg
LTEgaWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkLgorVGhlCisuVnQgYnRfZGV2aW5xdWlyeQorc3Ry
dWN0dXJlIGlzIGRlZmluZWQgYXMgZm9sbG93cworLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50
CitzdHJ1Y3QgYnRfZGV2aW5xdWlyeSB7CisgICAgICAgIGJkYWRkcl90ICAgICAgICBiZGFkZHI7
CisgICAgICAgIHVpbnQ4X3QgICAgICAgICBwc2Nhbl9yZXBfbW9kZTsKKyAgICAgICAgdWludDhf
dCAgICAgICAgIHBzY2FuX3BlcmlvZF9tb2RlOworICAgICAgICB1aW50OF90ICAgICAgICAgZGV2
X2NsYXNzWzNdOworICAgICAgICB1aW50MTZfdCAgICAgICAgY2xvY2tfb2Zmc2V0OworICAgICAg
ICBpbnQ4X3QgICAgICAgICAgcnNzaTsKKyAgICAgICAgdWludDhfdCAgICAgICAgIGRhdGFbMjQw
XTsKK307CisuRWQKKy5QcAorVGhlCiAuRm4gYmRhZGRyX3NhbWUgLAogLkZuIGJkYWRkcl9hbnkK
IGFuZApAQCAtNDQ0LDYgKzY5Miw2IEBACiAuU2ggQVVUSE9SUwogLkFuIE1ha3NpbSBZZXZtZW5r
aW4gQXEgbV9ldm1lbmtpbkB5YWhvby5jb20KIC5TaCBCVUdTCi1UaGVzZSBmdW5jdGlvbnMgdXNl
IHN0YXRpYyBkYXRhIHN0b3JhZ2U7CitTb21lIG9mIHRob3NlIGZ1bmN0aW9ucyB1c2Ugc3RhdGlj
IGRhdGEgc3RvcmFnZTsKIGlmIHRoZSBkYXRhIGlzIG5lZWRlZCBmb3IgZnV0dXJlIHVzZSwgaXQg
c2hvdWxkIGJlCiBjb3BpZWQgYmVmb3JlIGFueSBzdWJzZXF1ZW50IGNhbGxzIG92ZXJ3cml0ZSBp
dC4KSW5kZXg6IGJsdWV0b290aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJsdWV0b290aC5oCShyZXZpc2lv
biAxOTEwMTIpCisrKyBibHVldG9vdGguaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgPHN5cy9lbmRpYW4uaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KICNpbmNs
dWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPHN5cy91
bi5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8bmV0ZGIuaD4KQEAgLTQ2LDYgKzQ3
LDcgQEAKICNpbmNsdWRlIDxuZXRncmFwaC9ibHVldG9vdGgvaW5jbHVkZS9uZ19oY2kuaD4KICNp
bmNsdWRlIDxuZXRncmFwaC9ibHVldG9vdGgvaW5jbHVkZS9uZ19sMmNhcC5oPgogI2luY2x1ZGUg
PG5ldGdyYXBoL2JsdWV0b290aC9pbmNsdWRlL25nX2J0c29ja2V0Lmg+CisjaW5jbHVkZSA8dGlt
ZS5oPgogCiBfX0JFR0lOX0RFQ0xTCiAKQEAgLTEyOSw4ICsxMzEsNDggQEAKIAl1aW50OF90CQlf
cGFkZGluZ1syMF07CS8qIGxlYXZlIHNwYWNlIGZvciBmdXR1cmUgYWRkaXRpb25zICovCiB9Owog
CitzdHJ1Y3QgYnRfZGV2cmVxCit7CisJdWludDE2X3QJb3Bjb2RlOworCXVpbnQxNl90CWV2ZW50
OworCXZvaWQJCSpjcGFyYW07CisJc2l6ZV90CQljbGVuOworCXZvaWQJCSpycGFyYW07CisJc2l6
ZV90CQlybGVuOworfTsKKworc3RydWN0IGJ0X2RldmZpbHRlciB7CisJYml0c3RyX3QJYml0X2Rl
Y2wocGFja2V0X21hc2ssIDgpOworCWJpdHN0cl90CWJpdF9kZWNsKGV2ZW50X21hc2ssIDI1Nik7
Cit9OworCitzdHJ1Y3QgYnRfZGV2aW5xdWlyeSB7CisJYmRhZGRyX3QgICAgICAgIGJkYWRkcjsK
Kwl1aW50OF90ICAgICAgICAgcHNjYW5fcmVwX21vZGU7CisJdWludDhfdCAgICAgICAgIHBzY2Fu
X3BlcmlvZF9tb2RlOworCXVpbnQ4X3QgICAgICAgICBkZXZfY2xhc3NbM107CisJdWludDE2X3Qg
ICAgICAgIGNsb2NrX29mZnNldDsKKwlpbnQ4X3QgICAgICAgICAgcnNzaTsKKwl1aW50OF90ICAg
ICAgICAgZGF0YVsyNDBdOworfTsKKwogdHlwZWRlZiBpbnQJKGJ0X2RldmVudW1fY2JfdCkoaW50
LCBzdHJ1Y3QgYnRfZGV2aW5mbyBjb25zdCAqLCB2b2lkICopOwogCitpbnQJCWJ0X2Rldm9wZW4g
KGNoYXIgY29uc3QgKmRldm5hbWUpOworaW50CQlidF9kZXZjbG9zZShpbnQgcyk7CitpbnQJCWJ0
X2RldnNlbmQgKGludCBzLCB1aW50MTZfdCBvcGNvZGUsIHZvaWQgKnBhcmFtLCBzaXplX3QgcGxl
bik7CitpbnQJCWJ0X2RldnJlY3YgKGludCBzLCB1aW50OF90ICpidWYsIHNpemVfdCBzaXplLCB0
aW1lX3QgdG8pOworaW50CQlidF9kZXZyZXEgIChpbnQgcywgc3RydWN0IGJ0X2RldnJlcSAqciwg
dGltZV90IHRvKTsKK2ludAkJYnRfZGV2ZmlsdGVyKGludCBzLCBzdHJ1Y3QgYnRfZGV2ZmlsdGVy
IGNvbnN0ICpuZXcsCisJCQkgICAgIHN0cnVjdCBidF9kZXZmaWx0ZXIgKm9sZCk7Cit2b2lkCQli
dF9kZXZmaWx0ZXJfcGt0X3NldChzdHJ1Y3QgYnRfZGV2ZmlsdGVyICpmaWx0ZXIsIGludCB0eXBl
KTsKK3ZvaWQJCWJ0X2RldmZpbHRlcl9wa3RfY2xyKHN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRl
ciwgaW50IHR5cGUpOworaW50CQlidF9kZXZmaWx0ZXJfcGt0X3RzdChzdHJ1Y3QgYnRfZGV2Zmls
dGVyIGNvbnN0ICpmaWx0ZXIsIGludCB0eXBlKTsKK3ZvaWQJCWJ0X2RldmZpbHRlcl9ldnRfc2V0
KHN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciwgaW50IGV2ZW50KTsKK3ZvaWQJCWJ0X2RldmZp
bHRlcl9ldnRfY2xyKHN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciwgaW50IGV2ZW50KTsKK2lu
dAkJYnRfZGV2ZmlsdGVyX2V2dF90c3Qoc3RydWN0IGJ0X2RldmZpbHRlciBjb25zdCAqZmlsdGVy
LCBpbnQgZXZlbnQpOworaW50CQlidF9kZXZpbnF1aXJ5KGNoYXIgY29uc3QgKmRldm5hbWUsIHRp
bWVfdCBsZW5ndGgsIGludCBudW1fcnNwLAorCQkJICAgICAgc3RydWN0IGJ0X2RldmlucXVpcnkg
KippaSk7CiBpbnQJCWJ0X2RldmluZm8gKHN0cnVjdCBidF9kZXZpbmZvICpkaSk7CiBpbnQJCWJ0
X2RldmVudW0gKGJ0X2RldmVudW1fY2JfdCAqY2IsIHZvaWQgKmFyZyk7CiAKSW5kZXg6IE1ha2Vm
aWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIE1ha2VmaWxlCShyZXZpc2lvbiAxOTEwMTIpCisrKyBNYWtlZmls
ZQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTkgQEAKIE1MSU5LUys9CWJsdWV0b290aC4z
IGJ0X2RldmluZm8uMwogTUxJTktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2ZW51bS4zCiAKK01MSU5L
Uys9CWJsdWV0b290aC4zIGJ0X2Rldm9wZW4uMworTUxJTktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2
Y2xvc2UuMworTUxJTktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2c2VuZC4zCitNTElOS1MrPQlibHVl
dG9vdGguMyBidF9kZXZyZXEuMworTUxJTktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2ZmlsdGVyLjMK
K01MSU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmZpbHRlcl9wa3Rfc2V0LjMKK01MSU5LUys9CWJs
dWV0b290aC4zIGJ0X2RldmZpbHRlcl9wa3RfY2xyLjMKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0
X2RldmZpbHRlcl9wa3RfdHN0LjMKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmZpbHRlcl9l
dnRfc2V0LjMKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmZpbHRlcl9ldnRfY2xyLjMKK01M
SU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmZpbHRlcl9ldnRfdHN0LjMKK01MSU5LUys9CWJsdWV0
b290aC4zIGJ0X2RldmlucXVpcnkuMworCiBNTElOS1MrPQlibHVldG9vdGguMyBiZGFkZHJfc2Ft
ZS4zCiBNTElOS1MrPQlibHVldG9vdGguMyBiZGFkZHJfYW55LjMKIE1MSU5LUys9CWJsdWV0b290
aC4zIGJkYWRkcl9jb3B5LjMK
--0016361e86c09175d40467c870d7--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bb4a86c70904171621i5033bcc3w46b24800e20e7106>