Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Sep 2013 21:07:49 +0900
From:      Takuya ASADA <syuu@dokukino.com>
To:        hiren panchasara <hiren.panchasara@gmail.com>
Cc:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>, Adrian Chadd <adrian@freebsd.org>
Subject:   Re: Adding Flow Director sysctls to ixgbe(4) (was: netmap: traffic distribution)
Message-ID:  <CALG4x-WKC2=Na-pPAp-_DM9wuRrEFm6CRxL-TiWbdOUtvXS81Q@mail.gmail.com>
In-Reply-To: <CALG4x-Xf27oEOA9K5j%2BRRndFe1VbDowpTti8a8qwu1mRaB4BkQ@mail.gmail.com>
References:  <CALCpEUHcpoJoo_gqjyDzosE1bJ_J=o3uqUuyYJA8dWZdjMrNTA@mail.gmail.com> <CAJ-VmompkSY-tU2SysaEf6p1uJPmcMeXKJ6_EZ_DJiYTQXbUzw@mail.gmail.com> <CALG4x-XowXNze82jvFX84X0=d7MRucpJbUeExug9y7XsaZXkSw@mail.gmail.com> <CALCpEUHoVJgmYptMp6Q%2BY%2BDgbxgujN8e7TcANUi1De_fnkOZ_w@mail.gmail.com> <CALG4x-Xf27oEOA9K5j%2BRRndFe1VbDowpTti8a8qwu1mRaB4BkQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--bcaec520efabc496d604e798b12f
Content-Type: text/plain; charset=UTF-8

Hi,

This is updated version of the patch.
Signature filter list feature is added.

Here're usage of ixgbetool:
- add a filter
ixgbetool ix0 add_sig_filter tcpv4 10.1.0.1 34763 10.1.0.2 22 3
- show filters
ixgbetool ix0 show_sig_filter
- del a filter
ixgbetool ix0 del_sig_filter 1



2013/9/30 Takuya ASADA <syuu@dokukino.com>

> Hi,
>
> I just implemented device specific ioctl with device specific
> configuration tool.
> It still doesn't support some important features such as:
>  - FDIR enable / disable via sysctl or tunable params
>  - ATR enable / disable via sysctl or tunable params
>  - IPv6 support on signature filter
>  - signature filter list
>  - support perfect filter
> But, at least it can configure signature filter manually.
>
> Usage is as follows:
> Usage: ixgbetool <ifname> [operation]
> add_sig_filter <proto> <src_ip> <src_port> <dst_ip> <dst_port> <que_index>
>  del_sig_filter <proto> <src_ip> <src_port> <dst_ip> <dst_port>
>
>
> 2013/9/28 hiren panchasara <hiren.panchasara@gmail.com>
>
>>
>>
>>
>> On Fri, Sep 27, 2013 at 1:58 AM, Takuya ASADA <syuu@dokukino.com> wrote:
>>
>>> 2013/9/27 Adrian Chadd <adrian@freebsd.org>
>>>
>>>> On 27 September 2013 00:43, hiren panchasara <
>>>> hiren.panchasara@gmail.com> wrote:
>>>>
>>>>
>>>>> Takuya,
>>>>>
>>>>> I see a lot of responses/comments on proposed changes. Was anything
>>>>> decided
>>>>> at the end of it? As far as I can tell, its still not committed to the
>>>>> tree.
>>>>>
>>>>
>>>> I'd rather see an ioctl API for that chipset and then have a separate
>>>> tool program it for now.
>>>>
>>>
>>> Ah, like cxgbetool and cxgbe? (it has device specific tool and ioctls)
>>> http://svnweb.freebsd.org/base/head/tools/tools/cxgbetool/
>>>
>>
>> Something like this for ixgbe would be nice to start with, imo.
>>
>> Cheers,
>> Hiren
>>
>>> http://svnweb.freebsd.org/base/head/sys/dev/cxgb/
>>>
>>>
>>>> So, how bout we hack that up? :)
>>>>
>>>
>>>  Sound's interesting ;-)
>>> Could you tell me more detail about your idea?
>>>
>>>
>>
>

--bcaec520efabc496d604e798b12f
Content-Type: application/octet-stream; name="ixgbetool-v002.diff"
Content-Disposition: attachment; filename="ixgbetool-v002.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hm7nikph1

ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaXhnYmUvaXhnYmUuYyBiL3N5cy9kZXYvaXhnYmUvaXhnYmUu
YwppbmRleCBiNjVkZjcyLi5hZGVmYjE0IDEwMDY0NAotLS0gYS9zeXMvZGV2L2l4Z2JlL2l4Z2Jl
LmMKKysrIGIvc3lzL2Rldi9peGdiZS9peGdiZS5jCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNs
dWRlICJvcHRfaW5ldC5oIgogI2luY2x1ZGUgIm9wdF9pbmV0Ni5oIgorIAogI2luY2x1ZGUgIml4
Z2JlLmgiCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKQEAgLTIwMCw3ICsyMDEsOSBAQCBzdGF0aWMgdm9pZAlp
eGdiZV9oYW5kbGVfbXNmKHZvaWQgKiwgaW50KTsKIHN0YXRpYyB2b2lkCWl4Z2JlX2hhbmRsZV9t
b2Qodm9pZCAqLCBpbnQpOwogCiAjaWZkZWYgSVhHQkVfRkRJUgorI2lmZGVmIElYR0JFX0ZESVJf
QVRSCiBzdGF0aWMgdm9pZAlpeGdiZV9hdHIoc3RydWN0IHR4X3JpbmcgKiwgc3RydWN0IG1idWYg
Kik7CisjZW5kaWYKIHN0YXRpYyB2b2lkCWl4Z2JlX3JlaW5pdF9mZGlyKHZvaWQgKiwgaW50KTsK
ICNlbmRpZgogCkBAIC0yMjQsNiArMjI3LDE5IEBAIHN0YXRpYyBkcml2ZXJfdCBpeGdiZV9kcml2
ZXIgPSB7CiAJIml4IiwgaXhnYmVfbWV0aG9kcywgc2l6ZW9mKHN0cnVjdCBhZGFwdGVyKSwKIH07
CiAKK3N0YXRpYyBkX2lvY3RsX3QgaXhnYmVfZXh0ZW5zaW9uX2lvY3RsOworc3RhdGljIGRfb3Bl
bl90IGl4Z2JlX2V4dGVuc2lvbl9vcGVuOworc3RhdGljIGRfY2xvc2VfdCBpeGdiZV9leHRlbnNp
b25fY2xvc2U7CisKK3N0YXRpYyBzdHJ1Y3QgY2RldnN3IGl4Z2JlX2NkZXZzdyA9IHsKKyAgICAg
ICAuZF92ZXJzaW9uID0gICAgRF9WRVJTSU9OLAorICAgICAgIC5kX2ZsYWdzID0gICAgICAwLAor
ICAgICAgIC5kX29wZW4gPSAgICAgICBpeGdiZV9leHRlbnNpb25fb3BlbiwKKyAgICAgICAuZF9j
bG9zZSA9ICAgICAgaXhnYmVfZXh0ZW5zaW9uX2Nsb3NlLAorICAgICAgIC5kX2lvY3RsID0gICAg
ICBpeGdiZV9leHRlbnNpb25faW9jdGwsCisgICAgICAgLmRfbmFtZSA9ICAgICAgICJpeGdiZSIs
Cit9OworCiBkZXZjbGFzc190IGl4Z2JlX2RldmNsYXNzOwogRFJJVkVSX01PRFVMRShpeGdiZSwg
cGNpLCBpeGdiZV9kcml2ZXIsIGl4Z2JlX2RldmNsYXNzLCAwLCAwKTsKIApAQCAtMzE3LDYgKzMz
Myw3IEBAIHN0YXRpYyBib29sIGl4Z2JlX3JzY19lbmFibGUgPSBGQUxTRTsKIHN0YXRpYyBpbnQg
aXhnYmVfdG90YWxfcG9ydHM7CiAKICNpZmRlZiBJWEdCRV9GRElSCisjaWZkZWYgSVhHQkVfRkRJ
Ul9BVFIKIC8qCiAqKiBGb3IgRmxvdyBEaXJlY3RvcjogdGhpcyBpcyB0aGUKICoqIG51bWJlciBv
ZiBUWCBwYWNrZXRzIHdlIHNhbXBsZQpAQCAtMzI3LDYgKzM0NCw3IEBAIHN0YXRpYyBpbnQgaXhn
YmVfdG90YWxfcG9ydHM7CiAqKiBzZXR0aW5nIHRoaXMgdG8gMC4KICovCiBzdGF0aWMgaW50IGF0
cl9zYW1wbGVfcmF0ZSA9IDIwOworI2VuZGlmCiAvKiAKICoqIEZsb3cgRGlyZWN0b3IgYWN0dWFs
bHkgJ3N0ZWFscycKICoqIHBhcnQgb2YgdGhlIHBhY2tldCBidWZmZXIgYXMgaXRzCkBAIC00MDEs
NiArNDE5LDIwIEBAIGl4Z2JlX3Byb2JlKGRldmljZV90IGRldikKIAlyZXR1cm4gKEVOWElPKTsK
IH0KIAorc3RhdGljIGludAoraXhnYmVfbWFrZWRldihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikK
K3sKKwlhZGFwdGVyLT5jZGV2ID0gbWFrZV9kZXYoJml4Z2JlX2NkZXZzdywgYWRhcHRlci0+aWZw
LT5pZl9kdW5pdCwKKwkgICAgVUlEX1JPT1QsIEdJRF9XSEVFTCwgMDYwMCwgIiVzIiwgaWZfbmFt
ZShhZGFwdGVyLT5pZnApKTsKKwkKKwlpZiAoYWRhcHRlci0+Y2RldiA9PSBOVUxMKQorCQlyZXR1
cm4gKEVOT01FTSk7CisKKwlhZGFwdGVyLT5jZGV2LT5zaV9kcnYxID0gKHZvaWQgKilhZGFwdGVy
OworCQorCXJldHVybiAoMCk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBEZXZpY2UgaW5pdGlh
bGl6YXRpb24gcm91dGluZQogICoKQEAgLTYwNCw2ICs2MzYsMTQgQEAgaXhnYmVfYXR0YWNoKGRl
dmljZV90IGRldikKICNpZmRlZiBERVZfTkVUTUFQCiAJaXhnYmVfbmV0bWFwX2F0dGFjaChhZGFw
dGVyKTsKICNlbmRpZiAvKiBERVZfTkVUTUFQICovCisKKwllcnJvciA9IGl4Z2JlX21ha2VkZXYo
YWRhcHRlcik7CisJaWYgKGVycm9yKQorCQlnb3RvIGVycl9sYXRlOworCQorCW10eF9pbml0KCZh
ZGFwdGVyLT5maWx0ZXJfbXR4LCAiZmlsdGVyX210eCIsIE5VTEwsIE1UWF9ERUYpOworCVRBSUxR
X0lOSVQoJmFkYXB0ZXItPmZpbHRlcl9saXN0KTsKKwogCUlOSVRfREVCVUdPVVQoIml4Z2JlX2F0
dGFjaDogZW5kIik7CiAJcmV0dXJuICgwKTsKIGVycl9sYXRlOgpAQCAtMTgxMiw3ICsxODUyLDcg
QEAgcmV0cnk6CiAJCXJldHVybiAoZXJyb3IpOwogCX0KIAotI2lmZGVmIElYR0JFX0ZESVIKKyNp
ZmRlZiBJWEdCRV9GRElSX0FUUgogCS8qIERvIHRoZSBmbG93IGRpcmVjdG9yIG1hZ2ljICovCiAJ
aWYgKCh0eHItPmF0cl9zYW1wbGUpICYmICghYWRhcHRlci0+ZmRpcl9yZWluaXQpKSB7CiAJCSsr
dHhyLT5hdHJfY291bnQ7CkBAIC0zMDU5LDcgKzMwOTksNyBAQCBpeGdiZV9zZXR1cF90cmFuc21p
dF9yaW5nKHN0cnVjdCB0eF9yaW5nICp0eHIpCiAJCXR4YnVmLT5lb3AgPSBOVUxMOwogICAgICAg
ICB9CiAKLSNpZmRlZiBJWEdCRV9GRElSCisjaWZkZWYgSVhHQkVfRkRJUl9BVFIKIAkvKiBTZXQg
dGhlIHJhdGUgYXQgd2hpY2ggd2Ugc2FtcGxlIHBhY2tldHMgKi8KIAlpZiAoYWRhcHRlci0+aHcu
bWFjLnR5cGUgIT0gaXhnYmVfbWFjXzgyNTk4RUIpCiAJCXR4ci0+YXRyX3NhbXBsZSA9IGF0cl9z
YW1wbGVfcmF0ZTsKQEAgLTM0NzksNyArMzUxOSw3IEBAIGl4Z2JlX3Rzb19zZXR1cChzdHJ1Y3Qg
dHhfcmluZyAqdHhyLCBzdHJ1Y3QgbWJ1ZiAqbXAsCiAJcmV0dXJuICgwKTsKIH0KIAotI2lmZGVm
IElYR0JFX0ZESVIKKyNpZmRlZiBJWEdCRV9GRElSX0FUUgogLyoKICoqIFRoaXMgcm91dGluZSBw
YXJzZXMgcGFja2V0IGhlYWRlcnMgc28gdGhhdCBGbG93CiAqKiBEaXJlY3RvciBjYW4gbWFrZSBh
IGhhc2hlZCBmaWx0ZXIgdGFibGUgZW50cnkgCkBAIC01MjcwLDEzICs1MzEwLDMzIEBAIGl4Z2Jl
X3VwZGF0ZV9zdGF0c19jb3VudGVycyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKIAlhZGFwdGVy
LT5zdGF0cy54ZWMgKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1hFQyk7CiAJYWRhcHRlci0+
c3RhdHMuZmNjcmMgKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZDQ1JDKTsKIAlhZGFwdGVy
LT5zdGF0cy5mY2xhc3QgKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZDTEFTVCk7Ci0JLyog
T25seSByZWFkIEZDT0Ugb24gODI1OTkgKi8KKwkvKiBPbmx5IHJlYWQgRkNPRS9GRElSIG9uIDgy
NTk5ICovCiAJaWYgKGh3LT5tYWMudHlwZSAhPSBpeGdiZV9tYWNfODI1OThFQikgewogCQlhZGFw
dGVyLT5zdGF0cy5mY29lcnBkYyArPSBJWEdCRV9SRUFEX1JFRyhodywgSVhHQkVfRkNPRVJQREMp
OwogCQlhZGFwdGVyLT5zdGF0cy5mY29lcHJjICs9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9G
Q09FUFJDKTsKIAkJYWRhcHRlci0+c3RhdHMuZmNvZXB0YyArPSBJWEdCRV9SRUFEX1JFRyhodywg
SVhHQkVfRkNPRVBUQyk7CiAJCWFkYXB0ZXItPnN0YXRzLmZjb2Vkd3JjICs9IElYR0JFX1JFQURf
UkVHKGh3LCBJWEdCRV9GQ09FRFdSQyk7CiAJCWFkYXB0ZXItPnN0YXRzLmZjb2Vkd3RjICs9IElY
R0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GQ09FRFdUQyk7CisJCWFkYXB0ZXItPnN0YXRzLmZkaXJm
cmVlX2ZyZWUgPQorCQkJKElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GRElSRlJFRSkgJiBJWEdC
RV9GRElSRlJFRV9GUkVFX01BU0spCisJCQk+PiBJWEdCRV9GRElSRlJFRV9GUkVFX1NISUZUOwor
CQlhZGFwdGVyLT5zdGF0cy5mZGlyZnJlZV9jb2xsID0KKwkJCShJWEdCRV9SRUFEX1JFRyhodywg
SVhHQkVfRkRJUkZSRUUpICYgSVhHQkVfRkRJUkZSRUVfQ09MTF9NQVNLKQorCQkJPj4gSVhHQkVf
RkRJUkZSRUVfQ09MTF9TSElGVDsKKwkJYWRhcHRlci0+c3RhdHMuZmRpcnVzdGF0X2FkZCArPQor
CQkJKElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GRElSVVNUQVQpICYgSVhHQkVfRkRJUlVTVEFU
X0FERF9NQVNLKQorCQkJPj4gSVhHQkVfRkRJUlVTVEFUX0FERF9TSElGVDsKKwkJYWRhcHRlci0+
c3RhdHMuZmRpcnVzdGF0X3JlbW92ZSArPQorCQkJKElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9G
RElSVVNUQVQpICYgSVhHQkVfRkRJUlVTVEFUX1JFTU9WRV9NQVNLKQorCQkJPj4gSVhHQkVfRkRJ
UlVTVEFUX1JFTU9WRV9TSElGVDsKKwkJYWRhcHRlci0+c3RhdHMuZmRpcmZzdGF0X2ZhZGQgKz0K
KwkJCShJWEdCRV9SRUFEX1JFRyhodywgSVhHQkVfRkRJUkZTVEFUKSAmIElYR0JFX0ZESVJGU1RB
VF9GQUREX01BU0spCisJCQk+PiBJWEdCRV9GRElSRlNUQVRfRkFERF9TSElGVDsKKwkJYWRhcHRl
ci0+c3RhdHMuZmRpcmZzdGF0X2ZyZW1vdmUgKz0KKwkJCShJWEdCRV9SRUFEX1JFRyhodywgSVhH
QkVfRkRJUkZTVEFUKSAmIElYR0JFX0ZESVJGU1RBVF9GUkVNT1ZFX01BU0spCisJCQk+PiBJWEdC
RV9GRElSRlNUQVRfRlJFTU9WRV9TSElGVDsKKwkJYWRhcHRlci0+c3RhdHMuZmRpcm1hdGNoICs9
IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GRElSTUFUQ0gpOworCQlhZGFwdGVyLT5zdGF0cy5m
ZGlybWlzcyArPSBJWEdCRV9SRUFEX1JFRyhodywgSVhHQkVfRkRJUk1JU1MpOwogCX0KIAogCS8q
IEZpbGwgb3V0IHRoZSBPUyBzdGF0aXN0aWNzIHN0cnVjdHVyZSAqLwpAQCAtNTY0Miw2ICs1NzAy
LDMyIEBAIGl4Z2JlX2FkZF9od19zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKIAlTWVND
VExfQUREX1VRVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInR4X2ZyYW1lc18xMDI0XzE1
MjIiLAogCQkJQ1RMRkxBR19SRCwgJnN0YXRzLT5wdGMxNTIyLAogCQkJIjEwMjQtMTUyMiBieXRl
IGZyYW1lcyB0cmFuc21pdHRlZCIpOworCisJLyogZmRpciBzdGF0cyAqLworCVNZU0NUTF9BRERf
VVFVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRpcmZyZWVfZnJlZSIsCisJCUNUTEZM
QUdfUkQsICZzdGF0cy0+ZmRpcmZyZWVfZnJlZSwKKwkJIiIpOworCVNZU0NUTF9BRERfVVFVQUQo
Y3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRpcmZyZWVfY29sbCIsCisJCUNUTEZMQUdfUkQs
ICZzdGF0cy0+ZmRpcmZyZWVfY29sbCwKKwkJIiIpOworCVNZU0NUTF9BRERfVVFVQUQoY3R4LCBz
dGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRpcnVzdGF0X2FkZCIsCisJCUNUTEZMQUdfUkQsICZzdGF0
cy0+ZmRpcnVzdGF0X2FkZCwKKwkJIiIpOworCVNZU0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xp
c3QsIE9JRF9BVVRPLCAiZmRpcnVzdGF0X3JlbW92ZSIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+
ZmRpcnVzdGF0X3JlbW92ZSwKKwkJIiIpOworCVNZU0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xp
c3QsIE9JRF9BVVRPLCAiZmRpcmZzdGF0X2ZhZGQiLAorCQlDVExGTEFHX1JELCAmc3RhdHMtPmZk
aXJmc3RhdF9mYWRkLAorCQkiIik7CisJU1lTQ1RMX0FERF9VUVVBRChjdHgsIHN0YXRfbGlzdCwg
T0lEX0FVVE8sICJmZGlyZnN0YXRfZnJlbW92ZSIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRp
cmZzdGF0X2ZyZW1vdmUsCisJCSIiKTsKKwlTWVNDVExfQUREX1VRVUFEKGN0eCwgc3RhdF9saXN0
LCBPSURfQVVUTywgImZkaXJtYXRjaCIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRpcm1hdGNo
LAorCQkiIik7CisJU1lTQ1RMX0FERF9VUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJm
ZGlybWlzcyIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRpcm1pc3MsCisJCSIiKTsKIH0KIAog
LyoKQEAgLTU4MDMsMyArNTg4OSwxMzcgQEAgaXhnYmVfZGlzYWJsZV9yeF9kcm9wKHN0cnVjdCBh
ZGFwdGVyICphZGFwdGVyKQogICAgICAgICAJSVhHQkVfV1JJVEVfUkVHKGh3LCBJWEdCRV9TUlJD
VEwoaSksIHNycmN0bCk7CiAJfQogfQorCitzdGF0aWMgaW50CitpeGdiZV9leHRlbnNpb25fb3Bl
bihzdHJ1Y3QgY2RldiAqZGV2LCBpbnQgZmxhZ3MsIGludCBmbXAsIHN0cnVjdCB0aHJlYWQgKnRk
KQoreworICAgICAgIHJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK2l4Z2JlX2V4dGVuc2lv
bl9jbG9zZShzdHJ1Y3QgY2RldiAqZGV2LCBpbnQgZmxhZ3MsIGludCBmbXQsIHN0cnVjdCB0aHJl
YWQgKnRkKQoreworICAgICAgIHJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaXhfZmls
dGVyX2VudHJ5ICoKK2l4Z2JlX2ZpbmRfZmlsdGVyKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1
bnNpZ25lZCBpZCkKK3sKKwlzdHJ1Y3QgaXhfZmlsdGVyX2VudHJ5ICplbnRyeTsKKworCVRBSUxR
X0ZPUkVBQ0goZW50cnksICZhZGFwdGVyLT5maWx0ZXJfbGlzdCwgbGluaykKKwkJaWYgKGVudHJ5
LT5maWx0ZXIuaWQgPT0gaWQpCisJCQlyZXR1cm4gZW50cnk7CisJcmV0dXJuIE5VTEw7Cit9CisK
K3N0YXRpYyBpbnQKK2l4Z2JlX2V4dGVuc2lvbl9pb2N0bChzdHJ1Y3QgY2RldiAqZGV2LCB1bnNp
Z25lZCBsb25nIGNtZCwgY2FkZHJfdCBkYXRhLAorICAgIGludCBmZmxhZywgc3RydWN0IHRocmVh
ZCAqdGQpCit7CisJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIgPSAoc3RydWN0IGFkYXB0ZXIgKilk
ZXYtPnNpX2RydjE7CisJaW50IGVycm9yID0gMDsKKworCWlmIChwcml2X2NoZWNrKHRkLCBQUklW
X0RSSVZFUikpIHsKKwkJcmV0dXJuIChFUEVSTSk7CisJfQorCQorCW10eF9sb2NrKCZhZGFwdGVy
LT5maWx0ZXJfbXR4KTsKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgSVhHQkVfQUREX1NJR0ZJTFRF
UjogeworCQlzdHJ1Y3QgaXhfZmlsdGVyICpmaWx0ZXIgPSAoc3RydWN0IGl4X2ZpbHRlciAqKWRh
dGE7CisJCXN0cnVjdCBpeF9maWx0ZXJfZW50cnkgKmVudHJ5OworCQl1bmlvbiBpeGdiZV9hdHJf
aGFzaF9kd29yZCBpbnB1dCA9IHsuZHdvcmQgPSAwfTsKKwkJdW5pb24gaXhnYmVfYXRyX2hhc2hf
ZHdvcmQgY29tbW9uID0gey5kd29yZCA9IDB9OworCisJCXN3aXRjaCAoZmlsdGVyLT5wcm90bykg
eworCQljYXNlIElYR0JFX0ZJTFRFUl9QUk9UT19UQ1BWNDoKKwkJCWlucHV0LmZvcm1hdHRlZC5m
bG93X3R5cGUgXj0gSVhHQkVfQVRSX0ZMT1dfVFlQRV9UQ1BWNDsKKwkJCWJyZWFrOworCQljYXNl
IElYR0JFX0ZJTFRFUl9QUk9UT19VRFBWNDoKKwkJCWlucHV0LmZvcm1hdHRlZC5mbG93X3R5cGUg
Xj0gSVhHQkVfQVRSX0ZMT1dfVFlQRV9VRFBWNDsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJ
ZXJyb3IgPSBFSU5WQUw7CisJCQlnb3RvIG91dDsKKwkJfQorCQljb21tb24ucG9ydC5zcmMgXj0g
aHRvbnMoZmlsdGVyLT5zcmNfcG9ydCk7CisJCWNvbW1vbi5wb3J0LmRzdCBePSBodG9ucyhmaWx0
ZXItPmRzdF9wb3J0KTsKKwkJY29tbW9uLmZsZXhfYnl0ZXMgXj0gaHRvbnMoRVRIRVJUWVBFX0lQ
KTsKKwkJY29tbW9uLmlwIF49IGZpbHRlci0+c3JjX2lwLnNfYWRkciBeIGZpbHRlci0+ZHN0X2lw
LnNfYWRkcjsKKworCQllbnRyeSA9IG1hbGxvYyhzaXplb2YoKmVudHJ5KSwgTV9ERVZCVUYsIE1f
Tk9XQUlUIHwgTV9aRVJPKTsKKwkJaWYgKCFlbnRyeSkgeworCQkJZXJyb3IgPSBFTk9NRU07CisJ
CQlnb3RvIG91dDsKKwkJfQorCQltZW1jcHkoJmVudHJ5LT5maWx0ZXIsIGZpbHRlciwgc2l6ZW9m
KGVudHJ5LT5maWx0ZXIpKTsKKwkJZW50cnktPmZpbHRlci5pZCA9IGFkYXB0ZXItPm5leHRfZmls
dGVyX2lkKys7CisJCVRBSUxRX0lOU0VSVF9UQUlMKCZhZGFwdGVyLT5maWx0ZXJfbGlzdCwgZW50
cnksIGxpbmspOworCisJCWl4Z2JlX2ZkaXJfYWRkX3NpZ25hdHVyZV9maWx0ZXJfODI1OTkoJmFk
YXB0ZXItPmh3LAorCQkJaW5wdXQsIGNvbW1vbiwgZmlsdGVyLT5xdWVfaW5kZXgpOworCQlicmVh
azsKKwl9CisJY2FzZSBJWEdCRV9HRVRfU0lHRklMVEVSOiB7CisJCXN0cnVjdCBpeF9maWx0ZXIg
KmZpbHRlciA9IChzdHJ1Y3QgaXhfZmlsdGVyICopZGF0YTsKKwkJc3RydWN0IGl4X2ZpbHRlcl9l
bnRyeSAqZW50cnk7CisKKwkJZW50cnkgPSBpeGdiZV9maW5kX2ZpbHRlcihhZGFwdGVyLCBmaWx0
ZXItPmlkKTsKKwkJaWYgKGVudHJ5KQorCQkJbWVtY3B5KGZpbHRlciwgJmVudHJ5LT5maWx0ZXIs
IHNpemVvZigqZmlsdGVyKSk7CisJCWVsc2UKKwkJCWVycm9yID0gRU5PRU5UOworCQlicmVhazsK
Kwl9OworCWNhc2UgSVhHQkVfQ0xSX1NJR0ZJTFRFUjogeworCQl1bnNpZ25lZCAqaWQgPSAodW5z
aWduZWQgKilkYXRhOworCQlzdHJ1Y3QgaXhfZmlsdGVyX2VudHJ5ICplbnRyeTsKKwkJdW5pb24g
aXhnYmVfYXRyX2hhc2hfZHdvcmQgaW5wdXQgPSB7LmR3b3JkID0gMH07CisJCXVuaW9uIGl4Z2Jl
X2F0cl9oYXNoX2R3b3JkIGNvbW1vbiA9IHsuZHdvcmQgPSAwfTsKKworCQllbnRyeSA9IGl4Z2Jl
X2ZpbmRfZmlsdGVyKGFkYXB0ZXIsICppZCk7CisJCWlmICghZW50cnkpIHsKKwkJCWVycm9yID0g
RU5PRU5UOworCQkJZ290byBvdXQ7CisJCX0KKworCQlzd2l0Y2ggKGVudHJ5LT5maWx0ZXIucHJv
dG8pIHsKKwkJY2FzZSBJWEdCRV9GSUxURVJfUFJPVE9fVENQVjQ6CisJCQlpbnB1dC5mb3JtYXR0
ZWQuZmxvd190eXBlIF49IElYR0JFX0FUUl9GTE9XX1RZUEVfVENQVjQ7CisJCQlicmVhazsKKwkJ
Y2FzZSBJWEdCRV9GSUxURVJfUFJPVE9fVURQVjQ6CisJCQlpbnB1dC5mb3JtYXR0ZWQuZmxvd190
eXBlIF49IElYR0JFX0FUUl9GTE9XX1RZUEVfVURQVjQ7CisJCQlicmVhazsKKwkJZGVmYXVsdDoK
KwkJCWVycm9yID0gRUlOVkFMOworCQkJZ290byBvdXQ7CisJCX0KKwkJY29tbW9uLnBvcnQuc3Jj
IF49IGh0b25zKGVudHJ5LT5maWx0ZXIuc3JjX3BvcnQpOworCQljb21tb24ucG9ydC5kc3QgXj0g
aHRvbnMoZW50cnktPmZpbHRlci5kc3RfcG9ydCk7CisJCWNvbW1vbi5mbGV4X2J5dGVzIF49IGh0
b25zKEVUSEVSVFlQRV9JUCk7CisJCWNvbW1vbi5pcCBePSBlbnRyeS0+ZmlsdGVyLnNyY19pcC5z
X2FkZHIKKwkJCV4gZW50cnktPmZpbHRlci5kc3RfaXAuc19hZGRyOworCisJCWl4Z2JlX2ZkaXJf
ZXJhc2Vfc2lnbmF0dXJlX2ZpbHRlcl84MjU5OSgmYWRhcHRlci0+aHcsCisJCQlpbnB1dCwgY29t
bW9uKTsKKworCQlUQUlMUV9SRU1PVkUoJmFkYXB0ZXItPmZpbHRlcl9saXN0LCBlbnRyeSwgbGlu
ayk7CisJCWJyZWFrOworCX0KKwljYXNlIElYR0JFX0dFVF9TSUdGSUxURVJfTEVOOiB7CisJCXVu
c2lnbmVkICppZCA9ICh1bnNpZ25lZCAqKWRhdGE7CisJCQorCQkqaWQgPSBhZGFwdGVyLT5uZXh0
X2ZpbHRlcl9pZDsKKwkJYnJlYWs7CisJfQorCWRlZmF1bHQ6CisJCWVycm9yID0gRU9QTk9UU1VQ
UDsKKwkJYnJlYWs7CisJfQorCitvdXQ6CisJbXR4X3VubG9jaygmYWRhcHRlci0+ZmlsdGVyX210
eCk7CisJcmV0dXJuIChlcnJvcik7Cit9CisKZGlmZiAtLWdpdCBhL3N5cy9kZXYvaXhnYmUvaXhn
YmUuaCBiL3N5cy9kZXYvaXhnYmUvaXhnYmUuaAppbmRleCA3N2I3MmVkLi4wNjRiNTEwIDEwMDY0
NAotLS0gYS9zeXMvZGV2L2l4Z2JlL2l4Z2JlLmgKKysrIGIvc3lzL2Rldi9peGdiZS9peGdiZS5o
CkBAIC04OCw4ICs4OCwxMSBAQAogI2luY2x1ZGUgPHN5cy9wY3B1Lmg+CiAjaW5jbHVkZSA8c3lz
L3NtcC5oPgogI2luY2x1ZGUgPG1hY2hpbmUvc21wLmg+CisjaW5jbHVkZSA8c3lzL2NvbmYuaD4K
KyNpbmNsdWRlIDxzeXMvcHJpdi5oPgogCiAjaW5jbHVkZSAiaXhnYmVfYXBpLmgiCisjaW5jbHVk
ZSAiaXhnYmVfaW9jdGwuaCIKIAogLyogVHVuYWJsZXMgKi8KIApAQCAtNDY4LDggKzQ3MSwxNyBA
QCBzdHJ1Y3QgYWRhcHRlciB7CiAJdW5zaWduZWQgbG9uZwkJbGlua19pcnE7CiAKIAlzdHJ1Y3Qg
aXhnYmVfaHdfc3RhdHMgCXN0YXRzOworCisJc3RydWN0IGNkZXYJCSpjZGV2OworCVRBSUxRX0hF
QUQoLCBpeF9maWx0ZXJfZW50cnkpIGZpbHRlcl9saXN0OworCXN0cnVjdCBtdHgJCWZpbHRlcl9t
dHg7CisJdW5zaWduZWQJCW5leHRfZmlsdGVyX2lkOwogfTsKIAorc3RydWN0IGl4X2ZpbHRlcl9l
bnRyeSB7CisJVEFJTFFfRU5UUlkoaXhfZmlsdGVyX2VudHJ5KSBsaW5rOworCXN0cnVjdCBpeF9m
aWx0ZXIgZmlsdGVyOworfTsKIAogLyogUHJlY2lzaW9uIFRpbWUgU3luYyAoSUVFRSAxNTg4KSBk
ZWZpbmVzICovCiAjZGVmaW5lIEVUSEVSVFlQRV9JRUVFMTU4OCAgICAgIDB4ODhGNwpkaWZmIC0t
Z2l0IGEvc3lzL2Rldi9peGdiZS9peGdiZV84MjU5OS5jIGIvc3lzL2Rldi9peGdiZS9peGdiZV84
MjU5OS5jCmluZGV4IDNjYzhjZDcuLjcyZWE1ZWEgMTAwNjQ0Ci0tLSBhL3N5cy9kZXYvaXhnYmUv
aXhnYmVfODI1OTkuYworKysgYi9zeXMvZGV2L2l4Z2JlL2l4Z2JlXzgyNTk5LmMKQEAgLTE0ODIs
NyArMTQ4Miw4IEBAIHMzMiBpeGdiZV9pbml0X2ZkaXJfc2lnbmF0dXJlXzgyNTk5KHN0cnVjdCBp
eGdiZV9odyAqaHcsIHUzMiBmZGlyY3RybCkKIAkgKiAgU2V0IHRoZSBtYXhpbXVtIGxlbmd0aCBw
ZXIgaGFzaCBidWNrZXQgdG8gMHhBIGZpbHRlcnMKIAkgKiAgU2VuZCBpbnRlcnJ1cHQgd2hlbiA2
NCBmaWx0ZXJzIGFyZSBsZWZ0CiAJICovCi0JZmRpcmN0cmwgfD0gKDB4NiA8PCBJWEdCRV9GRElS
Q1RSTF9GTEVYX1NISUZUKSB8CisJZmRpcmN0cmwgfD0gSVhHQkVfRkRJUkNUUkxfUkVQT1JUX1NU
QVRVUyB8CisgCQkgICAgKDB4NiA8PCBJWEdCRV9GRElSQ1RSTF9GTEVYX1NISUZUKSB8CiAJCSAg
ICAoMHhBIDw8IElYR0JFX0ZESVJDVFJMX01BWF9MRU5HVEhfU0hJRlQpIHwKIAkJICAgICg0IDw8
IElYR0JFX0ZESVJDVFJMX0ZVTExfVEhSRVNIX1NISUZUKTsKIApAQCAtMTY2Nyw2ICsxNjY4LDU2
IEBAIHMzMiBpeGdiZV9mZGlyX2FkZF9zaWduYXR1cmVfZmlsdGVyXzgyNTk5KHN0cnVjdCBpeGdi
ZV9odyAqaHcsCiAJcmV0dXJuIElYR0JFX1NVQ0NFU1M7CiB9CiAKKy8qKgorICogIGl4Z2JlX2Zk
aXJfZXJhc2Vfc2lnbmF0dXJlX2ZpbHRlcl84MjU5OSAtIEFkZHMgYSBzaWduYXR1cmUgaGFzaCBm
aWx0ZXIKKyAqICBAaHc6IHBvaW50ZXIgdG8gaGFyZHdhcmUgc3RydWN0dXJlCisgKiAgQHN0cmVh
bTogaW5wdXQgYml0c3RyZWFtCisgKiAgQHF1ZXVlOiBxdWV1ZSBpbmRleCB0byBkaXJlY3QgdHJh
ZmZpYyB0bworICoqLworczMyIGl4Z2JlX2ZkaXJfZXJhc2Vfc2lnbmF0dXJlX2ZpbHRlcl84MjU5
OShzdHJ1Y3QgaXhnYmVfaHcgKmh3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5pb24gaXhnYmVfYXRyX2hhc2hfZHdvcmQgaW5wdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBpeGdiZV9hdHJfaGFzaF9kd29yZCBj
b21tb24pCit7CisJdTY0ICBmZGlyaGFzaGNtZDsKKwl1MzIgIGZkaXJjbWQ7CisKKwlERUJVR0ZV
TkMoIml4Z2JlX2ZkaXJfY2xlYXJfc2lnbmF0dXJlX2ZpbHRlcl84MjU5OSIpOworCisJLyoKKwkg
KiBHZXQgdGhlIGZsb3dfdHlwZSBpbiBvcmRlciB0byBwcm9ncmFtIEZESVJDTUQgcHJvcGVybHkK
KwkgKiBsb3dlc3QgMiBiaXRzIGFyZSBGRElSQ01ELkw0VFlQRSwgdGhpcmQgbG93ZXN0IGJpdCBp
cyBGRElSQ01ELklQVjYKKwkgKi8KKwlzd2l0Y2ggKGlucHV0LmZvcm1hdHRlZC5mbG93X3R5cGUp
IHsKKwljYXNlIElYR0JFX0FUUl9GTE9XX1RZUEVfVENQVjQ6CisJY2FzZSBJWEdCRV9BVFJfRkxP
V19UWVBFX1VEUFY0OgorCWNhc2UgSVhHQkVfQVRSX0ZMT1dfVFlQRV9TQ1RQVjQ6CisJY2FzZSBJ
WEdCRV9BVFJfRkxPV19UWVBFX1RDUFY2OgorCWNhc2UgSVhHQkVfQVRSX0ZMT1dfVFlQRV9VRFBW
NjoKKwljYXNlIElYR0JFX0FUUl9GTE9XX1RZUEVfU0NUUFY2OgorCQlicmVhazsKKwlkZWZhdWx0
OgorCQlERUJVR09VVCgiIEVycm9yIG9uIGZsb3cgdHlwZSBpbnB1dFxuIik7CisJCXJldHVybiBJ
WEdCRV9FUlJfQ09ORklHOworCX0KKworCS8qIGNvbmZpZ3VyZSBGRElSQ01EIHJlZ2lzdGVyICov
CisJZmRpcmNtZCA9IElYR0JFX0ZESVJDTURfQ01EX1JFTU9WRV9GTE9XIHwgCisJICAgICAgICAg
IElYR0JFX0ZESVJDTURfTEFTVCB8IElYR0JFX0ZESVJDTURfUVVFVUVfRU47CisJZmRpcmNtZCB8
PSBpbnB1dC5mb3JtYXR0ZWQuZmxvd190eXBlIDw8IElYR0JFX0ZESVJDTURfRkxPV19UWVBFX1NI
SUZUOworCisJLyoKKwkgKiBUaGUgbG93ZXIgMzItYml0cyBvZiBmZGlyaGFzaGNtZCBpcyBmb3Ig
RkRJUkhBU0gsIHRoZSB1cHBlciAzMi1iaXRzCisJICogaXMgZm9yIEZESVJDTUQuICBUaGVuIGRv
IGEgNjQtYml0IHJlZ2lzdGVyIHdyaXRlIGZyb20gRkRJUkhBU0guCisJICovCisJZmRpcmhhc2hj
bWQgPSAodTY0KWZkaXJjbWQgPDwgMzI7CisJZmRpcmhhc2hjbWQgfD0gaXhnYmVfYXRyX2NvbXB1
dGVfc2lnX2hhc2hfODI1OTkoaW5wdXQsIGNvbW1vbik7CisJSVhHQkVfV1JJVEVfUkVHNjQoaHcs
IElYR0JFX0ZESVJIQVNILCBmZGlyaGFzaGNtZCk7CisKKwlERUJVR09VVDEoIlR4IGhhc2g9JXhc
biIsICh1MzIpZmRpcmhhc2hjbWQpOworCisJcmV0dXJuIElYR0JFX1NVQ0NFU1M7Cit9CisKICNk
ZWZpbmUgSVhHQkVfQ09NUFVURV9CS1RfSEFTSF9JVEVSQVRJT04oX24pIFwKIGRvIHsgXAogCXUz
MiBuID0gKF9uKTsgXApkaWZmIC0tZ2l0IGEvc3lzL2Rldi9peGdiZS9peGdiZV9hcGkuaCBiL3N5
cy9kZXYvaXhnYmUvaXhnYmVfYXBpLmgKaW5kZXggOTEwMjNhZS4uNzdjNjQyNyAxMDA2NDQKLS0t
IGEvc3lzL2Rldi9peGdiZS9peGdiZV9hcGkuaAorKysgYi9zeXMvZGV2L2l4Z2JlL2l4Z2JlX2Fw
aS5oCkBAIC0xNDQsNiArMTQ0LDkgQEAgczMyIGl4Z2JlX2ZkaXJfYWRkX3NpZ25hdHVyZV9maWx0
ZXJfODI1OTkoc3RydWN0IGl4Z2JlX2h3ICpodywKIAkJCQkJICB1bmlvbiBpeGdiZV9hdHJfaGFz
aF9kd29yZCBpbnB1dCwKIAkJCQkJICB1bmlvbiBpeGdiZV9hdHJfaGFzaF9kd29yZCBjb21tb24s
CiAJCQkJCSAgdTggcXVldWUpOworczMyIGl4Z2JlX2ZkaXJfZXJhc2Vfc2lnbmF0dXJlX2ZpbHRl
cl84MjU5OShzdHJ1Y3QgaXhnYmVfaHcgKmh3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5pb24gaXhnYmVfYXRyX2hhc2hfZHdvcmQgaW5wdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBpeGdiZV9hdHJfaGFzaF9k
d29yZCBjb21tb24pOwogczMyIGl4Z2JlX2ZkaXJfc2V0X2lucHV0X21hc2tfODI1OTkoc3RydWN0
IGl4Z2JlX2h3ICpodywKIAkJCQkgICAgdW5pb24gaXhnYmVfYXRyX2lucHV0ICppbnB1dF9tYXNr
KTsKIHMzMiBpeGdiZV9mZGlyX3dyaXRlX3BlcmZlY3RfZmlsdGVyXzgyNTk5KHN0cnVjdCBpeGdi
ZV9odyAqaHcsCmRpZmYgLS1naXQgYS9zeXMvZGV2L2l4Z2JlL2l4Z2JlX2lvY3RsLmggYi9zeXMv
ZGV2L2l4Z2JlL2l4Z2JlX2lvY3RsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTJmMTUyMgotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9kZXYvaXhnYmUvaXhnYmVfaW9jdGwu
aApAQCAtMCwwICsxLDYzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQ29weXJpZ2h0IChjKSAy
MDEzIFRha3V5YSBBU0FEQQorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoKKworIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAgICB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgMi4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgQ2hlbHNpbyBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICAg
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCitBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CitJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQorQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCitMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCitDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFCitQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJEZyZWVCU0Qk
CisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0lYR0JFSU9DVExfSF9fCisjZGVm
aW5lIF9fSVhHQkVJT0NUTF9IX18KKworZW51bSB7CisJSVhfQUREX1NJR0ZJTFRFUiA9IDB4MCwK
KwlJWF9HRVRfU0lHRklMVEVSLAorCUlYX0NMUl9TSUdGSUxURVIsCisJSVhfR0VUX1NJR0ZJTFRF
Ul9MRU4KK307CisKK2VudW0geworCUlYR0JFX0ZJTFRFUl9QUk9UT19UQ1BWNCwKKwlJWEdCRV9G
SUxURVJfUFJPVE9fVURQVjQKK307CisKK3N0cnVjdCBpeF9maWx0ZXIgeworCXVuc2lnbmVkIGlk
OworCWludCBwcm90bzsKKwlzdHJ1Y3QgaW5fYWRkciBzcmNfaXA7CisJaW50IHNyY19wb3J0Owor
CXN0cnVjdCBpbl9hZGRyIGRzdF9pcDsKKwlpbnQgZHN0X3BvcnQ7CisJaW50IHF1ZV9pbmRleDsK
K307CisKKyNkZWZpbmUgSVhHQkVfQUREX1NJR0ZJTFRFUglfSU9XKCdpJywgSVhfQUREX1NJR0ZJ
TFRFUiwgc3RydWN0IGl4X2ZpbHRlcikKKyNkZWZpbmUgSVhHQkVfR0VUX1NJR0ZJTFRFUglfSU9X
UignaScsIElYX0dFVF9TSUdGSUxURVIsIHN0cnVjdCBpeF9maWx0ZXIpCisjZGVmaW5lIElYR0JF
X0NMUl9TSUdGSUxURVIJX0lPVygnaScsIElYX0NMUl9TSUdGSUxURVIsIHVuc2lnbmVkKQorI2Rl
ZmluZSBJWEdCRV9HRVRfU0lHRklMVEVSX0xFTiBfSU9SKCdpJywgSVhfR0VUX1NJR0ZJTFRFUl9M
RU4sIHVuc2lnbmVkKQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvc3lzL2Rldi9peGdiZS9peGdi
ZV90eXBlLmggYi9zeXMvZGV2L2l4Z2JlL2l4Z2JlX3R5cGUuaAppbmRleCA0OWY1YmMwLi5jNWYy
OWJiIDEwMDY0NAotLS0gYS9zeXMvZGV2L2l4Z2JlL2l4Z2JlX3R5cGUuaAorKysgYi9zeXMvZGV2
L2l4Z2JlL2l4Z2JlX3R5cGUuaApAQCAtMjk5Nyw2ICsyOTk3LDggQEAgc3RydWN0IGl4Z2JlX2h3
X3N0YXRzIHsKIAl1NjQgcWJ0Y1sxNl07CiAJdTY0IHFwcmRjWzE2XTsKIAl1NjQgcHhvbjJvZmZj
WzhdOworCXU2NCBmZGlyZnJlZV9mcmVlOworCXU2NCBmZGlyZnJlZV9jb2xsOwogCXU2NCBmZGly
dXN0YXRfYWRkOwogCXU2NCBmZGlydXN0YXRfcmVtb3ZlOwogCXU2NCBmZGlyZnN0YXRfZmFkZDsK
ZGlmZiAtLWdpdCBhL3Rvb2xzL3Rvb2xzL2l4Z2JldG9vbC9NYWtlZmlsZSBiL3Rvb2xzL3Rvb2xz
L2l4Z2JldG9vbC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
Njk1ZTkzCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdG9vbHMvaXhnYmV0b29sL01ha2VmaWxl
CkBAIC0wLDAgKzEsOSBAQAorIyAkRnJlZUJTRCQKKworUFJPRz0JaXhnYmV0b29sCitTUkNTPQlp
eGdiZXRvb2wuYworTk9fTUFOPQorQ0ZMQUdTKz0gLUkkey5DVVJESVJ9Ly4uLy4uLy4uL3N5cy9k
ZXYvaXhnYmUgLUkuCitCSU5ESVI/PSAvdXNyL3NiaW4KKworLmluY2x1ZGUgPGJzZC5wcm9nLm1r
PgpkaWZmIC0tZ2l0IGEvdG9vbHMvdG9vbHMvaXhnYmV0b29sL2l4Z2JldG9vbC5jIGIvdG9vbHMv
dG9vbHMvaXhnYmV0b29sL2l4Z2JldG9vbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjExY2IyYmUKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy90b29scy9peGdiZXRvb2wv
aXhnYmV0b29sLmMKQEAgLTAsMCArMSwyMTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitDb3B5
cmlnaHQgKGMpIDIwMTMsIFRha3V5YSBBU0FEQS4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1Jl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICAgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBDaGVsc2lvIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKK0FORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKK0lNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCitBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKK0xJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK0NP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCitTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKK0lOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi8KKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJl
ZUJTRCQiKTsKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j
bHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgor
I2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90
eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+
CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVk
ZSA8aXhnYmVfaW9jdGwuaD4KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisJZnByaW50
ZihzdGRlcnIsICJVc2FnZTogaXhnYmV0b29sIDxpZm5hbWU+IFtvcGVyYXRpb25dXG4iKTsKKwlm
cHJpbnRmKHN0ZGVyciwgIlx0YWRkX3NpZ19maWx0ZXIgPHByb3RvPiA8c3JjX2lwPiA8c3JjX3Bv
cnQ+IDxkc3RfaXA+IDxkc3RfcG9ydD4gPHF1ZV9pbmRleD5cbiIpOworCWZwcmludGYoc3RkZXJy
LCAiXHRzaG93X3NpZ19maWx0ZXJcbiIpOworCWZwcmludGYoc3RkZXJyLCAiXHRkZWxfc2lnX2Zp
bHRlciA8aWQ+XG4iKTsKK30KKworc3RhdGljIGludAorZG9pdChjb25zdCBjaGFyICppZmZfbmFt
ZSwgdW5zaWduZWQgbG9uZyBjbWQsIHZvaWQgKmRhdGEpCit7CisJaW50IGZkID0gMDsKKwlpbnQg
ZXJyOworCWNoYXIgYnVmWzY0XTsKKworCXNucHJpbnRmKGJ1ZiwgNjQsICIvZGV2LyVzIiwgaWZm
X25hbWUpOworCWlmICgoZmQgPSBvcGVuKGJ1ZiwgT19SRFdSKSkgPCAwKQorCQlyZXR1cm4gLTE7
CisJCisJZXJyID0gaW9jdGwoZmQsIGNtZCwgZGF0YSkgPCAwID8gLTEgOiAwOworCWNsb3NlKGZk
KTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IAorYWRkX3NpZ19maWx0ZXIoaW50IGFy
Z2MsIGNoYXIgKmFyZ3ZbXSwgY2hhciAqaWZuYW1lKQoreworCXN0cnVjdCBpeF9maWx0ZXIgZmls
dGVyOworCWludCBlcnJvcjsKKworCWlmIChhcmdjICE9IDkpIAorCQlyZXR1cm4gLTE7CisKKwlp
ZiAoIXN0cmNtcChhcmd2WzNdLCAidGNwdjQiKSkKKwkJZmlsdGVyLnByb3RvID0gSVhHQkVfRklM
VEVSX1BST1RPX1RDUFY0OworCWVsc2UgaWYgKCFzdHJjbXAoYXJndlszXSwgInVkcHY0IikpCisJ
CWZpbHRlci5wcm90byA9IElYR0JFX0ZJTFRFUl9QUk9UT19VRFBWNDsKKwllbHNlCisJCXJldHVy
biAtMTsKKwllcnJvciA9IGluZXRfYXRvbihhcmd2WzRdLCAmZmlsdGVyLnNyY19pcCk7CisJaWYg
KGVycm9yICE9IDEpCisJCXJldHVybiBlcnJvcjsKKwllcnJubyA9IDA7CisJZmlsdGVyLnNyY19w
b3J0ID0gc3RydG9sKGFyZ3ZbNV0sIE5VTEwsIDApOworCWlmIChlcnJubykKKwkJcmV0dXJuIGVy
cm5vOworCWVycm9yID0gaW5ldF9hdG9uKGFyZ3ZbNl0sICZmaWx0ZXIuZHN0X2lwKTsKKwlpZiAo
ZXJyb3IgIT0gMSkKKwkJcmV0dXJuIGVycm9yOworCWVycm5vID0gMDsKKwlmaWx0ZXIuZHN0X3Bv
cnQgPSBzdHJ0b2woYXJndls3XSwgTlVMTCwgMCk7CisJaWYgKGVycm5vKQorCQlyZXR1cm4gZXJy
bm87CisJZXJybm8gPSAwOworCWZpbHRlci5xdWVfaW5kZXggPSBzdHJ0b2woYXJndls4XSwgTlVM
TCwgMCk7CisJaWYgKGVycm5vKQorCQlyZXR1cm4gZXJybm87CisKKwllcnJvciA9IGRvaXQoaWZu
YW1lLCBJWEdCRV9BRERfU0lHRklMVEVSLCAodm9pZCAqKSZmaWx0ZXIpOworCWlmIChlcnJvcikK
KwkJcGVycm9yKCJpb2N0bCIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGNvbnN0
IGNoYXIgKgorZmlsdGVyX3Byb3RvX3N0cihpbnQgcHJvdG8pCit7CisJY29uc3QgY2hhciAqc3Ry
OworCisJc3dpdGNoIChwcm90bykgeworCWNhc2UgSVhHQkVfRklMVEVSX1BST1RPX1RDUFY0Ogor
CQlzdHIgPSAidGNwdjQiOworCQlicmVhazsKKwljYXNlIElYR0JFX0ZJTFRFUl9QUk9UT19VRFBW
NDoKKwkJc3RyID0gInVkcHY0IjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJc3RyID0gIihpbnZh
bCkiOworCX0KKwlyZXR1cm4gc3RyOworfQorCitzdGF0aWMgaW50IAorc2hvd19zaWdfZmlsdGVy
KGludCBhcmdjLCBjaGFyICphcmd2W10sIGNoYXIgKmlmbmFtZSkKK3sKKwl1bnNpZ25lZCBpOwor
CXVuc2lnbmVkIGxlbjsKKwlpbnQgZXJyb3I7CisKKwlpZiAoYXJnYyAhPSAzKSAKKwkJcmV0dXJu
IC0xOworCisJZXJyb3IgPSBkb2l0KGlmbmFtZSwgSVhHQkVfR0VUX1NJR0ZJTFRFUl9MRU4sICh2
b2lkICopJmxlbik7CisJaWYgKGVycm9yKQorCQlwZXJyb3IoImlvY3RsIik7CisKKwlmb3IgKGkg
PSAwOyBpIDwgbGVuOyBpKyspIHsKKwkJc3RydWN0IGl4X2ZpbHRlciBmaWx0ZXI7CisJCWZpbHRl
ci5pZCA9IGk7CisJCWVycm9yID0gZG9pdChpZm5hbWUsIElYR0JFX0dFVF9TSUdGSUxURVIsICh2
b2lkICopJmZpbHRlcik7CisJCWlmIChlcnJvcikKKwkJCWNvbnRpbnVlOworCQlwcmludGYoImlk
OiAldVxuIiwgZmlsdGVyLmlkKTsKKwkJcHJpbnRmKCJwcm90bzogJXNcbiIsIGZpbHRlcl9wcm90
b19zdHIoZmlsdGVyLnByb3RvKSk7CisJCXByaW50Zigic3JjX2lwOiAlc1xuIiwgaW5ldF9udG9h
KGZpbHRlci5zcmNfaXApKTsKKwkJcHJpbnRmKCJzcmNfcG9ydDogJWRcbiIsIGZpbHRlci5zcmNf
cG9ydCk7CisJCXByaW50ZigiZHN0X2lwOiAlc1xuIiwgaW5ldF9udG9hKGZpbHRlci5kc3RfaXAp
KTsKKwkJcHJpbnRmKCJkc3RfcG9ydDogJWRcbiIsIGZpbHRlci5kc3RfcG9ydCk7CisJCXByaW50
ZigicXVlX2luZGV4OiAlZFxuIiwgZmlsdGVyLnF1ZV9pbmRleCk7CisJCXByaW50ZigiXG4iKTsK
Kwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgCitkZWxfc2lnX2ZpbHRlcihpbnQgYXJn
YywgY2hhciAqYXJndltdLCBjaGFyICppZm5hbWUpCit7CisJdW5zaWduZWQgaWQ7CisJaW50IGVy
cm9yOworCisJaWYgKGFyZ2MgIT0gNCkgCisJCXJldHVybiAtMTsKKworCWVycm5vID0gMDsKKwlp
ZCA9IHN0cnRvdWwoYXJndlszXSwgTlVMTCwgMCk7CisJaWYgKGVycm5vKQorCQlyZXR1cm4gZXJy
bm87CisKKwllcnJvciA9IGRvaXQoaWZuYW1lLCBJWEdCRV9DTFJfU0lHRklMVEVSLCAodm9pZCAq
KSZpZCk7CisJaWYgKGVycm9yKQorCQlwZXJyb3IoImlvY3RsIik7CisJcmV0dXJuIDA7Cit9CisK
K2ludCAKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpbnQgcmV0OworCWNoYXIg
KmlmbmFtZTsKKworCWlmIChhcmdjIDwgMykgeworCQl1c2FnZSgpOworCQlleGl0KDEpOworCX0K
KwlpZm5hbWUgPSBhcmd2WzFdOworCWlmICghc3RyY21wKGFyZ3ZbMl0sICJhZGRfc2lnX2ZpbHRl
ciIpKQorCQlyZXQgPSBhZGRfc2lnX2ZpbHRlcihhcmdjLCBhcmd2LCBpZm5hbWUpOworCWVsc2Ug
aWYgKCFzdHJjbXAoYXJndlsyXSwgInNob3dfc2lnX2ZpbHRlciIpKQorCQlyZXQgPSBzaG93X3Np
Z19maWx0ZXIoYXJnYywgYXJndiwgaWZuYW1lKTsKKwllbHNlIGlmICghc3RyY21wKGFyZ3ZbMl0s
ICJkZWxfc2lnX2ZpbHRlciIpKQorCQlyZXQgPSBkZWxfc2lnX2ZpbHRlcihhcmdjLCBhcmd2LCBp
Zm5hbWUpOworCWVsc2UgCisJCXJldCA9IC0xOworCisJaWYgKHJldCkKKwkJdXNhZ2UoKTsKKwor
CXJldHVybiAocmV0KTsKK30KKwo=
--bcaec520efabc496d604e798b12f--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALG4x-WKC2=Na-pPAp-_DM9wuRrEFm6CRxL-TiWbdOUtvXS81Q>