Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Sep 2011 15:51:32 +0900
From:      Takuya ASADA <syuu@dokukino.com>
To:        jfv@freebsd.org, freebsd-net@freebsd.org
Subject:   Adding Flow Director sysctls to ixgbe(4)
Message-ID:  <CALG4x-W99OZxd=1ZDvW4=MBqeE3RPOazc7jc_3O30X-Pou3k8Q@mail.gmail.com>

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

Hi,

I implemented Ethernet Flow Director sysctls to ixgbe(4), here's a detail:

- Adding removing signature filter
On linux version of ixgbe driver, it has ability to set/remove perfect
filter from userland using ethtool command.
I implemented similar feature, but on sysctl, and not perfect filter
but signature filter(which means hash collision may occurs).

Following command adds a signature filter on ix0 for
10.0.0.2:47390/tcp -> 10.0.0.1:22/tcp, queueing Rx queue 10.
$ sysctl dev.ix.0.set_fdir_signature="tcpv4 10.0.0.2:47390 10.0.0.1:22 10"
Clearing a filter takes similar values but not includes queue number:
$ sysctl dev.ix.0.clear_fdir_signature="tcpv4 10.0.0.2:47390 10.0.0.1:22"

- Statistics of Flow Director
These sysctls poll fdir statistics register:
dev.ix.*.mac_stats.fdirfree_free
dev.ix.*.mac_stats.fdirfree_coll
dev.ix.*.mac_stats.fdirustat_add
dev.ix.*.mac_stats.fdirustat_remove
dev.ix.*.mac_stats.fdirfstat_fadd
dev.ix.*.mac_stats.fdirfstat_fremove
dev.ix.*.mac_stats.fdirmatch
dev.ix.*.mac_stats.fdirmiss

And I divided "#ifdef IXGBE_FDIR" to "#ifdef IXGBE_FDIR" and "#ifdef
IXGBE_FDIR_ATR".
If only IXGBE_FDIR is defined, only set_fdir_signature sysctl sets
signature filters.
If IXGBE_FDIR and IXGBE_FDIR_ATR are defined, ixgbe_atr also sets
signature filters automatically.
Which means even if you set a filter with specific queue number via
sysctl, ixgbe_atr will override the queue number.

--0016e6d266028c9aa204ac2c26c4
Content-Type: text/x-patch; charset=US-ASCII; name="ixgbe-head-signature.diff"
Content-Disposition: attachment; filename="ixgbe-head-signature.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gs71oy620

SW5kZXg6IGl4Z2JlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaXhnYmUuYwkocmV2aXNpb24gMjI1MDEzKQor
KysgaXhnYmUuYwkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAKICNpbmNsdWRlICJv
cHRfaW5ldDYuaCIKICNlbmRpZgogCisvKgorI2RlZmluZSBJWEdCRV9GRElSIDEKKyNkZWZpbmUg
SVhHQkVfRkRJUl9BVFIgMQorKi8KKwogI2luY2x1ZGUgIml4Z2JlLmgiCiAKIC8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKQEAgLTE1Myw2ICsxNTgsOCBAQAogc3RhdGljIGludCAgICAgIGl4Z2JlX3htaXQoc3RydWN0
IHR4X3JpbmcgKiwgc3RydWN0IG1idWYgKiopOwogc3RhdGljIGludAlpeGdiZV9zZXRfZmxvd2Nu
dGwoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBzdGF0aWMgaW50CWl4Z2JlX3NldF9hZHZlcnRpc2Uo
U1lTQ1RMX0hBTkRMRVJfQVJHUyk7CitzdGF0aWMgaW50CWl4Z2JlX3NldF9mZGlyX3NpZ25hdHVy
ZShTWVNDVExfSEFORExFUl9BUkdTKTsKK3N0YXRpYyBpbnQJaXhnYmVfY2xlYXJfZmRpcl9zaWdu
YXR1cmUoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBzdGF0aWMgaW50CWl4Z2JlX2RtYV9tYWxsb2Mo
c3RydWN0IGFkYXB0ZXIgKiwgYnVzX3NpemVfdCwKIAkJICAgIHN0cnVjdCBpeGdiZV9kbWFfYWxs
b2MgKiwgaW50KTsKIHN0YXRpYyB2b2lkICAgICBpeGdiZV9kbWFfZnJlZShzdHJ1Y3QgYWRhcHRl
ciAqLCBzdHJ1Y3QgaXhnYmVfZG1hX2FsbG9jICopOwpAQCAtMTkxLDggKzE5OCwxMCBAQAogc3Rh
dGljIHZvaWQJaXhnYmVfaGFuZGxlX21zZih2b2lkICosIGludCk7CiBzdGF0aWMgdm9pZAlpeGdi
ZV9oYW5kbGVfbW9kKHZvaWQgKiwgaW50KTsKIAorI2lmZGVmIElYR0JFX0ZESVJfQVRSCitzdGF0
aWMgdm9pZAlpeGdiZV9hdHIoc3RydWN0IHR4X3JpbmcgKiwgc3RydWN0IG1idWYgKik7CisjZW5k
aWYKICNpZmRlZiBJWEdCRV9GRElSCi1zdGF0aWMgdm9pZAlpeGdiZV9hdHIoc3RydWN0IHR4X3Jp
bmcgKiwgc3RydWN0IG1idWYgKik7CiBzdGF0aWMgdm9pZAlpeGdiZV9yZWluaXRfZmRpcih2b2lk
ICosIGludCk7CiAjZW5kaWYKIApAQCAtMjkyLDcgKzMwMSw3IEBACiAvKiBLZWVwIHJ1bm5pbmcg
dGFiIG9uIHRoZW0gZm9yIHNhbml0eSBjaGVjayAqLwogc3RhdGljIGludCBpeGdiZV90b3RhbF9w
b3J0czsKIAotI2lmZGVmIElYR0JFX0ZESVIKKyNpZmRlZiBJWEdCRV9GRElSX0FUUgogLyoKICoq
IEZvciBGbG93IERpcmVjdG9yOiB0aGlzIGlzIHRoZQogKiogbnVtYmVyIG9mIFRYIHBhY2tldHMg
d2Ugc2FtcGxlCkBAIC0zMDMsNiArMzEyLDggQEAKICoqIHNldHRpbmcgdGhpcyB0byAwLgogKi8K
IHN0YXRpYyBpbnQgYXRyX3NhbXBsZV9yYXRlID0gMjA7CisjZW5kaWYKKyNpZmRlZiBJWEdCRV9G
RElSCiAvKiAKICoqIEZsb3cgRGlyZWN0b3IgYWN0dWFsbHkgJ3N0ZWFscycKICoqIHBhcnQgb2Yg
dGhlIHBhY2tldCBidWZmZXIgYXMgaXRzCkBAIC00MTYsNiArNDI3LDE2IEBACiAJCQlPSURfQVVU
TywgImVuYWJsZV9haW0iLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAogCQkJJml4Z2JlX2VuYWJs
ZV9haW0sIDEsICJJbnRlcnJ1cHQgTW9kZXJhdGlvbiIpOwogCisJU1lTQ1RMX0FERF9QUk9DKGRl
dmljZV9nZXRfc3lzY3RsX2N0eChkZXYpLAorCQkJU1lTQ1RMX0NISUxEUkVOKGRldmljZV9nZXRf
c3lzY3RsX3RyZWUoZGV2KSksCisJCQlPSURfQVVUTywgInNldF9mZGlyX3NpZ25hdHVyZSIsIENU
TFRZUEVfU1RSSU5HIHwgQ1RMRkxBR19XUiwKKwkJCWFkYXB0ZXIsIDAsIGl4Z2JlX3NldF9mZGly
X3NpZ25hdHVyZSwgIkEiLCAiU2V0IEZsb3cgRGlyZWN0b3IgU2lnbmF0dXJlIik7CisKKwlTWVND
VExfQUREX1BST0MoZGV2aWNlX2dldF9zeXNjdGxfY3R4KGRldiksCisJCQlTWVNDVExfQ0hJTERS
RU4oZGV2aWNlX2dldF9zeXNjdGxfdHJlZShkZXYpKSwKKwkJCU9JRF9BVVRPLCAiY2xlYXJfZmRp
cl9zaWduYXR1cmUiLCBDVExUWVBFX1NUUklORyB8IENUTEZMQUdfV1IsCisJCQlhZGFwdGVyLCAw
LCBpeGdiZV9jbGVhcl9mZGlyX3NpZ25hdHVyZSwgIkEiLCAiQ2xlYXIgRmxvdyBEaXJlY3RvciBT
aWduYXR1cmUiKTsKKwogCS8qIFNldCB1cCB0aGUgdGltZXIgY2FsbG91dCAqLwogCWNhbGxvdXRf
aW5pdF9tdHgoJmFkYXB0ZXItPnRpbWVyLCAmYWRhcHRlci0+Y29yZV9tdHgsIDApOwogCkBAIC0x
Njg1LDcgKzE3MDYsNyBAQAogICAgICAgICAgICAgICAgIGNtZF90eXBlX2xlbiB8PSBJWEdCRV9B
RFZUWERfTUFDX1RTVEFNUDsKICNlbmRpZgogCi0jaWZkZWYgSVhHQkVfRkRJUgorI2lmZGVmIElY
R0JFX0ZESVJfQVRSCiAJLyogRG8gdGhlIGZsb3cgZGlyZWN0b3IgbWFnaWMgKi8KIAlpZiAoKHR4
ci0+YXRyX3NhbXBsZSkgJiYgKCFhZGFwdGVyLT5mZGlyX3JlaW5pdCkpIHsKIAkJKyt0eHItPmF0
cl9jb3VudDsKQEAgLTI4MzYsNyArMjg1Nyw3IEBACiAJCXR4YnVmLT5lb3BfaW5kZXggPSAtMTsK
ICAgICAgICAgfQogCi0jaWZkZWYgSVhHQkVfRkRJUgorI2lmZGVmIElYR0JFX0ZESVJfQVRSCiAJ
LyogU2V0IHRoZSByYXRlIGF0IHdoaWNoIHdlIHNhbXBsZSBwYWNrZXRzICovCiAJaWYgKGFkYXB0
ZXItPmh3Lm1hYy50eXBlICE9IGl4Z2JlX21hY184MjU5OEVCKQogCQl0eHItPmF0cl9zYW1wbGUg
PSBhdHJfc2FtcGxlX3JhdGU7CkBAIC0zMjE2LDcgKzMyMzcsNyBAQAogCXJldHVybiBUUlVFOwog
fQogCi0jaWZkZWYgSVhHQkVfRkRJUgorI2lmZGVmIElYR0JFX0ZESVJfQVRSCiAvKgogKiogVGhp
cyByb3V0aW5lIHBhcnNlcyBwYWNrZXQgaGVhZGVycyBzbyB0aGF0IEZsb3cKICoqIERpcmVjdG9y
IGNhbiBtYWtlIGEgaGFzaGVkIGZpbHRlciB0YWJsZSBlbnRyeSAKQEAgLTQxNTEsNyArNDE3Miw3
IEBACiAJCXUzMgkJcnNjLCBwdHlwZTsKIAkJdTE2CQlobGVuLCBwbGVuLCBoZHIsIHZ0YWc7CiAJ
CWJvb2wJCWVvcDsKLSAKKwogCQkvKiBTeW5jIHRoZSByaW5nLiAqLwogCQlidXNfZG1hbWFwX3N5
bmMocnhyLT5yeGRtYS5kbWFfdGFnLCByeHItPnJ4ZG1hLmRtYV9tYXAsCiAJCSAgICBCVVNfRE1B
U1lOQ19QT1NUUkVBRCB8IEJVU19ETUFTWU5DX1BPU1RXUklURSk7CkBAIC00OTMzLDYgKzQ5NTQs
MzAgQEAKIAkJYWRhcHRlci0+c3RhdHMuZmNvZWR3dGMgKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElY
R0JFX0ZDT0VEV1RDKTsKIAl9CiAKKwkvKiBPbmx5IHJlYWQgZmRpciBvbiA4MjU5OSAqLworCWlm
IChody0+bWFjLnR5cGUgIT0gaXhnYmVfbWFjXzgyNTk4RUIpIHsKKwkJYWRhcHRlci0+c3RhdHMu
ZmRpcmZyZWVfZnJlZSA9CisJCQkoSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZESVJGUkVFKSAm
IElYR0JFX0ZESVJGUkVFX0ZSRUVfTUFTSykKKwkJCT4+IElYR0JFX0ZESVJGUkVFX0ZSRUVfU0hJ
RlQ7CisJCWFkYXB0ZXItPnN0YXRzLmZkaXJmcmVlX2NvbGwgPQorCQkJKElYR0JFX1JFQURfUkVH
KGh3LCBJWEdCRV9GRElSRlJFRSkgJiBJWEdCRV9GRElSRlJFRV9DT0xMX01BU0spCisJCQk+PiBJ
WEdCRV9GRElSRlJFRV9DT0xMX1NISUZUOworCQlhZGFwdGVyLT5zdGF0cy5mZGlydXN0YXRfYWRk
ICs9CisJCQkoSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZESVJVU1RBVCkgJiBJWEdCRV9GRElS
VVNUQVRfQUREX01BU0spCisJCQk+PiBJWEdCRV9GRElSVVNUQVRfQUREX1NISUZUOworCQlhZGFw
dGVyLT5zdGF0cy5mZGlydXN0YXRfcmVtb3ZlICs9CisJCQkoSVhHQkVfUkVBRF9SRUcoaHcsIElY
R0JFX0ZESVJVU1RBVCkgJiBJWEdCRV9GRElSVVNUQVRfUkVNT1ZFX01BU0spCisJCQk+PiBJWEdC
RV9GRElSVVNUQVRfUkVNT1ZFX1NISUZUOworCQlhZGFwdGVyLT5zdGF0cy5mZGlyZnN0YXRfZmFk
ZCArPQorCQkJKElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GRElSRlNUQVQpICYgSVhHQkVfRkRJ
UkZTVEFUX0ZBRERfTUFTSykKKwkJCT4+IElYR0JFX0ZESVJGU1RBVF9GQUREX1NISUZUOworCQlh
ZGFwdGVyLT5zdGF0cy5mZGlyZnN0YXRfZnJlbW92ZSArPQorCQkJKElYR0JFX1JFQURfUkVHKGh3
LCBJWEdCRV9GRElSRlNUQVQpICYgSVhHQkVfRkRJUkZTVEFUX0ZSRU1PVkVfTUFTSykKKwkJCT4+
IElYR0JFX0ZESVJGU1RBVF9GUkVNT1ZFX1NISUZUOworCQlhZGFwdGVyLT5zdGF0cy5mZGlybWF0
Y2ggKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZESVJNQVRDSCk7CisJCWFkYXB0ZXItPnN0
YXRzLmZkaXJtaXNzICs9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GRElSTUlTUyk7CisJfQor
CiAJLyogRmlsbCBvdXQgdGhlIE9TIHN0YXRpc3RpY3Mgc3RydWN0dXJlICovCiAJaWZwLT5pZl9p
cGFja2V0cyA9IGFkYXB0ZXItPnN0YXRzLmdwcmM7CiAJaWZwLT5pZl9vcGFja2V0cyA9IGFkYXB0
ZXItPnN0YXRzLmdwdGM7CkBAIC01MzAxLDYgKzUzNDYsMzIgQEAKIAlTWVNDVExfQUREX1VRVUFE
KGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImZjX2R3b3JkX3R4ZCIsCiAJCUNUTEZMQUdfUkQs
ICZzdGF0cy0+ZmNvZWR3dGMsCiAJCSJGQ29FIERXb3JkcyBUcmFuc21pdHRlZCIpOworCisJLyog
ZmRpciBzdGF0cyAqLworCVNZU0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRP
LCAiZmRpcmZyZWVfZnJlZSIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRpcmZyZWVfZnJlZSwK
KwkJIiIpOworCVNZU0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRp
cmZyZWVfY29sbCIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRpcmZyZWVfY29sbCwKKwkJIiIp
OworCVNZU0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRpcnVzdGF0
X2FkZCIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRpcnVzdGF0X2FkZCwKKwkJIiIpOworCVNZ
U0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRpcnVzdGF0X3JlbW92
ZSIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRpcnVzdGF0X3JlbW92ZSwKKwkJIiIpOworCVNZ
U0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRpcmZzdGF0X2ZhZGQi
LAorCQlDVExGTEFHX1JELCAmc3RhdHMtPmZkaXJmc3RhdF9mYWRkLAorCQkiIik7CisJU1lTQ1RM
X0FERF9VUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJmZGlyZnN0YXRfZnJlbW92ZSIs
CisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRpcmZzdGF0X2ZyZW1vdmUsCisJCSIiKTsKKwlTWVND
VExfQUREX1VRVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImZkaXJtYXRjaCIsCisJCUNU
TEZMQUdfUkQsICZzdGF0cy0+ZmRpcm1hdGNoLAorCQkiIik7CisJU1lTQ1RMX0FERF9VUVVBRChj
dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJmZGlybWlzcyIsCisJCUNUTEZMQUdfUkQsICZzdGF0
cy0+ZmRpcm1pc3MsCisJCSIiKTsKIH0KIAogLyoKQEAgLTUzOTIsMyArNTQ2MywxMzMgQEAKIAog
CXJldHVybiAoZXJyb3IpOwogfQorCitzdGF0aWMgaW50CitpeGdiZV9mZGlyX3BhcnNlX2FkZHJl
c3MoY2hhciAqc3RyaW5nLCBzdHJ1Y3QgaW5fYWRkciAqaXAsIGludCAqcG9ydCkKK3sKKwljaGFy
ICp0b2tlbjsKKwlpbnQgZXJyb3I7CisKKwl0b2tlbiA9IHN0cnNlcCgmc3RyaW5nLCAiOiIpOwor
CWlmICghdG9rZW4pCisJCXJldHVybiAoRUlOVkFMKTsKKworCWVycm9yID0gaW5ldF9hdG9uKHRv
a2VuLCBpcCk7CisJaWYgKGVycm9yICE9IDEpCisJCXJldHVybiAoZXJyb3IpOworCisJdG9rZW4g
PSBzdHJzZXAoJnN0cmluZywgIjoiKTsKKwlpZiAoIXRva2VuKQorCQlyZXR1cm4gKEVJTlZBTCk7
CisKKwkqcG9ydCA9IHN0cnRvbCh0b2tlbiwgTlVMTCwgMCk7CisJaWYgKCpwb3J0IDw9IDApCisJ
CXJldHVybiAoRUlOVkFMKTsKKworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK2l4Z2Jl
X2ZkaXJfcGFyc2Vfc3lzY3RsKGNoYXIgKnN0cmluZywgdW5pb24gaXhnYmVfYXRyX2hhc2hfZHdv
cmQgKmlucHV0LCAKKwl1bmlvbiBpeGdiZV9hdHJfaGFzaF9kd29yZCAqY29tbW9uLCBpbnQgKnF1
ZV9pbmRleCkKK3sKKwljaGFyICp0b2tlbjsKKwlzdHJ1Y3QgaW5fYWRkciBzcmNfaXAsIGRzdF9p
cDsKKwlpbnQgc3JjX3BvcnQgPSAwLCBkc3RfcG9ydCA9IDA7CisJaW50IGVycm9yOworCisJdG9r
ZW4gPSBzdHJzZXAoJnN0cmluZywgIiAiKTsKKwlpZiAoIXRva2VuKQorCQlyZXR1cm4gKEVJTlZB
TCk7CisKKwlpZiAoIXN0cmNtcCh0b2tlbiwgInRjcHY0IikpCisJCWlucHV0LT5mb3JtYXR0ZWQu
Zmxvd190eXBlIF49IElYR0JFX0FUUl9GTE9XX1RZUEVfVENQVjQ7CisJZWxzZSBpZiAoIXN0cmNt
cCh0b2tlbiwgInVkcHY0IikpCisJCWlucHV0LT5mb3JtYXR0ZWQuZmxvd190eXBlIF49IElYR0JF
X0FUUl9GTE9XX1RZUEVfVURQVjQ7CisJZWxzZQorCQlyZXR1cm4gKEVJTlZBTCk7CisKKwl0b2tl
biA9IHN0cnNlcCgmc3RyaW5nLCAiICIpOworCWlmICghdG9rZW4pCisJCXJldHVybiAoRUlOVkFM
KTsKKworCWVycm9yID0gaXhnYmVfZmRpcl9wYXJzZV9hZGRyZXNzKHRva2VuLCAmc3JjX2lwLCAm
c3JjX3BvcnQpOworCWlmIChlcnJvcikKKwkJcmV0dXJuIChlcnJvcik7CisKKwljb21tb24tPnBv
cnQuc3JjIF49IGh0b25zKHNyY19wb3J0KTsKKworCXRva2VuID0gc3Ryc2VwKCZzdHJpbmcsICIg
Iik7CisJaWYgKCF0b2tlbikKKwkJcmV0dXJuIChFSU5WQUwpOworCisJZXJyb3IgPSBpeGdiZV9m
ZGlyX3BhcnNlX2FkZHJlc3ModG9rZW4sICZkc3RfaXAsICZkc3RfcG9ydCk7CisJaWYgKGVycm9y
KQorCQlyZXR1cm4gKGVycm9yKTsKKworCWNvbW1vbi0+cG9ydC5kc3QgXj0gaHRvbnMoZHN0X3Bv
cnQpOworCWNvbW1vbi0+ZmxleF9ieXRlcyBePSBodG9ucyhFVEhFUlRZUEVfSVApOworCWNvbW1v
bi0+aXAgXj0gc3JjX2lwLnNfYWRkciBeIGRzdF9pcC5zX2FkZHI7CisKKwlpZiAocXVlX2luZGV4
ICE9IE5VTEwpIHsKKwkJdG9rZW4gPSBzdHJzZXAoJnN0cmluZywgIiAiKTsKKwkJaWYgKCF0b2tl
bikKKwkJCXJldHVybiAoRUlOVkFMKTsKKwkJKnF1ZV9pbmRleCA9IHN0cnRvbCh0b2tlbiwgTlVM
TCwgMCk7CisJfQorCisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAoraXhnYmVfc2V0X2Zk
aXJfc2lnbmF0dXJlKFNZU0NUTF9IQU5ETEVSX0FSR1MpCit7CisJY2hhciBidWZbMTAyNF0gPSB7
MCx9OworCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyOworCXVuaW9uIGl4Z2JlX2F0cl9oYXNoX2R3
b3JkIGlucHV0ID0gey5kd29yZCA9IDB9OworCXVuaW9uIGl4Z2JlX2F0cl9oYXNoX2R3b3JkIGNv
bW1vbiA9IHsuZHdvcmQgPSAwfTsKKwlpbnQgcXVlX2luZGV4OworCWludCBlcnJvcjsKKworCWFk
YXB0ZXIgPSAoc3RydWN0IGFkYXB0ZXIgKikgYXJnMTsKKwllcnJvciA9IHN5c2N0bF9oYW5kbGVf
c3RyaW5nKG9pZHAsIGJ1Ziwgc2l6ZW9mKGJ1ZiksIHJlcSk7CisJaWYgKGVycm9yKQorCQlyZXR1
cm4gKGVycm9yKTsKKwlpZiAoYnVmWzBdID09ICdcMCcpCisJCXJldHVybiAoMCk7CisKKwllcnJv
ciA9IGl4Z2JlX2ZkaXJfcGFyc2Vfc3lzY3RsKGJ1ZiwgJmlucHV0LCAmY29tbW9uLCAmcXVlX2lu
ZGV4KTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiAoZXJyb3IpOworCisJaXhnYmVfZmRpcl9hZGRf
c2lnbmF0dXJlX2ZpbHRlcl84MjU5OSgmYWRhcHRlci0+aHcsCisJICAgIGlucHV0LCBjb21tb24s
IHF1ZV9pbmRleCk7CisKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CitpeGdiZV9jbGVh
cl9mZGlyX3NpZ25hdHVyZShTWVNDVExfSEFORExFUl9BUkdTKQoreworCWNoYXIgYnVmWzEwMjRd
ID0gezAsfTsKKwlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcjsKKwl1bmlvbiBpeGdiZV9hdHJfaGFz
aF9kd29yZCBpbnB1dCA9IHsuZHdvcmQgPSAwfTsKKwl1bmlvbiBpeGdiZV9hdHJfaGFzaF9kd29y
ZCBjb21tb24gPSB7LmR3b3JkID0gMH07CisJaW50IGVycm9yOworCisJYWRhcHRlciA9IChzdHJ1
Y3QgYWRhcHRlciAqKSBhcmcxOworCWVycm9yID0gc3lzY3RsX2hhbmRsZV9zdHJpbmcob2lkcCwg
YnVmLCBzaXplb2YoYnVmKSwgcmVxKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiAoZXJyb3IpOwor
CWlmIChidWZbMF0gPT0gJ1wwJykKKwkJcmV0dXJuICgwKTsKKworCWVycm9yID0gaXhnYmVfZmRp
cl9wYXJzZV9zeXNjdGwoYnVmLCAmaW5wdXQsICZjb21tb24sIE5VTEwpOworCWlmIChlcnJvcikK
KwkJcmV0dXJuIChlcnJvcik7CisKKwlpeGdiZV9mZGlyX2NsZWFyX3NpZ25hdHVyZV9maWx0ZXJf
ODI1OTkoJmFkYXB0ZXItPmh3LAorCSAgICBpbnB1dCwgY29tbW9uKTsKKworCXJldHVybiAoMCk7
Cit9CkluZGV4OiBpeGdiZV90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaXhnYmVfdHlwZS5oCShyZXZp
c2lvbiAyMjUwMTMpCisrKyBpeGdiZV90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1ODgsNiAr
MjU4OCw4IEBACiAJdTY0IHFidGNbMTZdOwogCXU2NCBxcHJkY1sxNl07CiAJdTY0IHB4b24yb2Zm
Y1s4XTsKKwl1NjQgZmRpcmZyZWVfZnJlZTsKKwl1NjQgZmRpcmZyZWVfY29sbDsKIAl1NjQgZmRp
cnVzdGF0X2FkZDsKIAl1NjQgZmRpcnVzdGF0X3JlbW92ZTsKIAl1NjQgZmRpcmZzdGF0X2ZhZGQ7
CkluZGV4OiBpeGdiZV84MjU5OS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGl4Z2JlXzgyNTk5LmMJKHJldmlz
aW9uIDIyNTAxMykKKysrIGl4Z2JlXzgyNTk5LmMJKHdvcmtpbmcgY29weSkKQEAgLTEyNDIsNiAr
MTI0Miw3IEBACiAJLyogTW92ZSB0aGUgZmxleGlibGUgYnl0ZXMgdG8gdXNlIHRoZSBldGhlcnR5
cGUgLSBzaGlmdCA2IHdvcmRzICovCiAJZmRpcmN0cmwgfD0gKDB4NiA8PCBJWEdCRV9GRElSQ1RS
TF9GTEVYX1NISUZUKTsKIAorCWZkaXJjdHJsIHw9IElYR0JFX0ZESVJDVFJMX1JFUE9SVF9TVEFU
VVM7CiAKIAkvKiBQcmltZSB0aGUga2V5cyBmb3IgaGFzaGluZyAqLwogCUlYR0JFX1dSSVRFX1JF
RyhodywgSVhHQkVfRkRJUkhLRVksIElYR0JFX0FUUl9CVUNLRVRfSEFTSF9LRVkpOwpAQCAtMTU1
Miw3ICsxNTUzLDcgQEAKIH0KIAogLyoqCi0gKiAgaXhnYmVfYXRyX2FkZF9zaWduYXR1cmVfZmls
dGVyXzgyNTk5IC0gQWRkcyBhIHNpZ25hdHVyZSBoYXNoIGZpbHRlcgorICogIGl4Z2JlX2ZkaXJf
YWRkX3NpZ25hdHVyZV9maWx0ZXJfODI1OTkgLSBBZGRzIGEgc2lnbmF0dXJlIGhhc2ggZmlsdGVy
CiAgKiAgQGh3OiBwb2ludGVyIHRvIGhhcmR3YXJlIHN0cnVjdHVyZQogICogIEBzdHJlYW06IGlu
cHV0IGJpdHN0cmVhbQogICogIEBxdWV1ZTogcXVldWUgaW5kZXggdG8gZGlyZWN0IHRyYWZmaWMg
dG8KQEAgLTE2MDQsNiArMTYwNSw1NiBAQAogfQogCiAvKioKKyAqICBpeGdiZV9mZGlyX2NsZWFy
X3NpZ25hdHVyZV9maWx0ZXJfODI1OTkgLSBBZGRzIGEgc2lnbmF0dXJlIGhhc2ggZmlsdGVyCisg
KiAgQGh3OiBwb2ludGVyIHRvIGhhcmR3YXJlIHN0cnVjdHVyZQorICogIEBzdHJlYW06IGlucHV0
IGJpdHN0cmVhbQorICogIEBxdWV1ZTogcXVldWUgaW5kZXggdG8gZGlyZWN0IHRyYWZmaWMgdG8K
KyAqKi8KK3MzMiBpeGdiZV9mZGlyX2NsZWFyX3NpZ25hdHVyZV9maWx0ZXJfODI1OTkoc3RydWN0
IGl4Z2JlX2h3ICpodywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaW9uIGl4Z2JlX2F0cl9oYXNoX2R3b3JkIGlucHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pb24gaXhnYmVfYXRyX2hhc2hfZHdvcmQgY29tbW9uKQor
eworCXU2NCAgZmRpcmhhc2hjbWQ7CisJdTMyICBmZGlyY21kOworCisJREVCVUdGVU5DKCJpeGdi
ZV9mZGlyX2NsZWFyX3NpZ25hdHVyZV9maWx0ZXJfODI1OTkiKTsKKworCS8qCisJICogR2V0IHRo
ZSBmbG93X3R5cGUgaW4gb3JkZXIgdG8gcHJvZ3JhbSBGRElSQ01EIHByb3Blcmx5CisJICogbG93
ZXN0IDIgYml0cyBhcmUgRkRJUkNNRC5MNFRZUEUsIHRoaXJkIGxvd2VzdCBiaXQgaXMgRkRJUkNN
RC5JUFY2CisJICovCisJc3dpdGNoIChpbnB1dC5mb3JtYXR0ZWQuZmxvd190eXBlKSB7CisJY2Fz
ZSBJWEdCRV9BVFJfRkxPV19UWVBFX1RDUFY0OgorCWNhc2UgSVhHQkVfQVRSX0ZMT1dfVFlQRV9V
RFBWNDoKKwljYXNlIElYR0JFX0FUUl9GTE9XX1RZUEVfU0NUUFY0OgorCWNhc2UgSVhHQkVfQVRS
X0ZMT1dfVFlQRV9UQ1BWNjoKKwljYXNlIElYR0JFX0FUUl9GTE9XX1RZUEVfVURQVjY6CisJY2Fz
ZSBJWEdCRV9BVFJfRkxPV19UWVBFX1NDVFBWNjoKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJREVC
VUdPVVQoIiBFcnJvciBvbiBmbG93IHR5cGUgaW5wdXRcbiIpOworCQlyZXR1cm4gSVhHQkVfRVJS
X0NPTkZJRzsKKwl9CisKKwkvKiBjb25maWd1cmUgRkRJUkNNRCByZWdpc3RlciAqLworCWZkaXJj
bWQgPSBJWEdCRV9GRElSQ01EX0NNRF9SRU1PVkVfRkxPVyB8IAorCSAgICAgICAgICBJWEdCRV9G
RElSQ01EX0xBU1QgfCBJWEdCRV9GRElSQ01EX1FVRVVFX0VOOworCWZkaXJjbWQgfD0gaW5wdXQu
Zm9ybWF0dGVkLmZsb3dfdHlwZSA8PCBJWEdCRV9GRElSQ01EX0ZMT1dfVFlQRV9TSElGVDsKKwor
CS8qCisJICogVGhlIGxvd2VyIDMyLWJpdHMgb2YgZmRpcmhhc2hjbWQgaXMgZm9yIEZESVJIQVNI
LCB0aGUgdXBwZXIgMzItYml0cworCSAqIGlzIGZvciBGRElSQ01ELiAgVGhlbiBkbyBhIDY0LWJp
dCByZWdpc3RlciB3cml0ZSBmcm9tIEZESVJIQVNILgorCSAqLworCWZkaXJoYXNoY21kID0gKHU2
NClmZGlyY21kIDw8IDMyOworCWZkaXJoYXNoY21kIHw9IGl4Z2JlX2F0cl9jb21wdXRlX3NpZ19o
YXNoXzgyNTk5KGlucHV0LCBjb21tb24pOworCUlYR0JFX1dSSVRFX1JFRzY0KGh3LCBJWEdCRV9G
RElSSEFTSCwgZmRpcmhhc2hjbWQpOworCisJREVCVUdPVVQxKCJUeCBoYXNoPSV4XG4iLCAodTMy
KWZkaXJoYXNoY21kKTsKKworCXJldHVybiBJWEdCRV9TVUNDRVNTOworfQorCisvKioKICAqICBp
eGdiZV9nZXRfZmRpcnRjcG1fODI1OTkgLSBnZW5lcmF0ZSBhIHRjcCBwb3J0IGZyb20gYXRyX2lu
cHV0X21hc2tzCiAgKiAgQGlucHV0X21hc2s6IG1hc2sgdG8gYmUgYml0IHN3YXBwZWQKICAqCkBA
IC0yMTY0LDUgKzIyMTUsMyBAQAogb3V0OgogCXJldHVybiBsZXNtX2VuYWJsZWQ7CiB9Ci0KLQpJ
bmRleDogaXhnYmVfYXBpLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaXhnYmVfYXBpLmgJKHJldmlzaW9uIDIy
NTAxMykKKysrIGl4Z2JlX2FwaS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDkgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIGl4Z2JlX2F0
cl9oYXNoX2R3b3JkIGlucHV0LAogCQkJCQkgIHVuaW9uIGl4Z2JlX2F0cl9oYXNoX2R3b3JkIGNv
bW1vbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4IHF1ZXVl
KTsKK3MzMiBpeGdiZV9mZGlyX2NsZWFyX3NpZ25hdHVyZV9maWx0ZXJfODI1OTkoc3RydWN0IGl4
Z2JlX2h3ICpodywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
aW9uIGl4Z2JlX2F0cl9oYXNoX2R3b3JkIGlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5pb24gaXhnYmVfYXRyX2hhc2hfZHdvcmQgY29tbW9uKTsKIHMz
MiBpeGdiZV9mZGlyX2FkZF9wZXJmZWN0X2ZpbHRlcl84MjU5OShzdHJ1Y3QgaXhnYmVfaHcgKmh3
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIGl4Z2JlX2F0
cl9pbnB1dCAqaW5wdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IGl4Z2JlX2F0cl9pbnB1dF9tYXNrcyAqbWFza3MsCg==
--0016e6d266028c9aa204ac2c26c4--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALG4x-W99OZxd=1ZDvW4=MBqeE3RPOazc7jc_3O30X-Pou3k8Q>