Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Feb 2012 20:26:02 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        freebsd-wireless@freebsd.org
Subject:   [net80211] support vendor bitmap entries; teach if_ath to export PHY error code in error frames
Message-ID:  <CAJ-VmonSrcSQmZeENgH1fagnn6DOMhX6rC-n9=dOtypTabcSLg@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--20cf307f3092b43fc504b81bd36f
Content-Type: text/plain; charset=ISO-8859-1

Hi,

As part of my radar project, I'm going to try and teach the BSD/Linux
ath driver and radiotap API about vendor extensions and implement a
(reasonably) well documented way to expose what I need.

The driver already exports the whole PHY error frame payload via
radiotap and you can select which PHY error types are passed up by
setting bits in the dev.ath.X.monpass sysctl. The trouble is the PHY
error code isn't exposed so it currently isn't possible to know
whether its a data or a PHY error frame.

This patch is a WIP and implements what I need. In short:

* The net80211 radiotap code doesn't know about vendor extension
bitmap(s), so there's currently no way to take those into account when
calculating the channel state offset in the header. Since the radiotap
code directly writes into that (rather than have the driver do it per
frame), adding any vendor bitmaps does mess things up quite a bit.

* define a vendor attribute in if_athioctl.h - this should move to
ieee80211_radiotap.h at some point.

* Add fields to the ath RX radiotap struct, which includes the vendor
bitmap, vendor attribute and the vendor payload.

* Add a vendor payload, which includes the Atheros OUI and the RX
status + PHY error code.

With this, userland tools can be built to read the radar and spectral
scan PHY error frames in userland. It makes prototyping code much,
much easier.

What I'm going to do to this:

* Move the vendor attribute definition into ieee80211_radiotap.h;
* Finalise on the Atheros vendor attribute layout. It doesn't match
what is used in the reference driver but I'll use different vendor
bitmap/namespace bytes, so things won't clash.
* Document the new ieee80211_radiotap_attachv() and why it exists.

I'd appreciate some feedback.

Thanks!


Adrian

--20cf307f3092b43fc504b81bd36f
Content-Type: text/x-patch; charset=US-ASCII;
	name="net80211-ath-radiotap-phyerr.diff"
Content-Disposition: attachment; filename="net80211-ath-radiotap-phyerr.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gy8545hf0

SW5kZXg6IG5ldDgwMjExL2llZWU4MDIxMV92YXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBuZXQ4MDIxMS9p
ZWVlODAyMTFfdmFyLmgJKHJldmlzaW9uIDIzMDg1NSkKKysrIG5ldDgwMjExL2llZWU4MDIxMV92
YXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzAwLDYgKzcwMCwxMSBAQAogCQl1aW50MzJfdCB0eF9y
YWRpb3RhcCwKIAkgICAgc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnJoLCBpbnQg
cmxlbiwKIAkJdWludDMyX3QgcnhfcmFkaW90YXApOwordm9pZAlpZWVlODAyMTFfcmFkaW90YXBf
YXR0YWNodihzdHJ1Y3QgaWVlZTgwMjExY29tICosCisJICAgIHN0cnVjdCBpZWVlODAyMTFfcmFk
aW90YXBfaGVhZGVyICp0aCwKKwkgICAgaW50IHRsZW4sIGludCBuX3R4X3YsIHVpbnQzMl90IHR4
X3JhZGlvdGFwLAorCSAgICBzdHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciAqcmgsCisJ
ICAgIGludCBybGVuLCBpbnQgbl9yeF92LCB1aW50MzJfdCByeF9yYWRpb3RhcCk7CiB2b2lkCWll
ZWU4MDIxMV9yYWRpb3RhcF9kZXRhY2goc3RydWN0IGllZWU4MDIxMWNvbSAqKTsKIHZvaWQJaWVl
ZTgwMjExX3JhZGlvdGFwX3ZhdHRhY2goc3RydWN0IGllZWU4MDIxMXZhcCAqKTsKIHZvaWQJaWVl
ZTgwMjExX3JhZGlvdGFwX3ZkZXRhY2goc3RydWN0IGllZWU4MDIxMXZhcCAqKTsKSW5kZXg6IG5l
dDgwMjExL2llZWU4MDIxMV9yYWRpb3RhcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG5ldDgwMjExL2llZWU4
MDIxMV9yYWRpb3RhcC5jCShyZXZpc2lvbiAyMzA4NTUpCisrKyBuZXQ4MDIxMS9pZWVlODAyMTFf
cmFkaW90YXAuYwkod29ya2luZyBjb3B5KQpAQCAtNDcsMTMgKzQ3LDI0IEBACiAKICNpbmNsdWRl
IDxuZXQ4MDIxMS9pZWVlODAyMTFfdmFyLmg+CiAKLXN0YXRpYyBpbnQgcmFkaW90YXBfb2Zmc2V0
KHN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBfaGVhZGVyICosIGludCk7CitzdGF0aWMgaW50IHJh
ZGlvdGFwX29mZnNldChzdHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciAqLCBpbnQsIGlu
dCk7CiAKIHZvaWQKIGllZWU4MDIxMV9yYWRpb3RhcF9hdHRhY2goc3RydWN0IGllZWU4MDIxMWNv
bSAqaWMsCiAJc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnRoLCBpbnQgdGxlbiwg
dWludDMyX3QgdHhfcmFkaW90YXAsCiAJc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIg
KnJoLCBpbnQgcmxlbiwgdWludDMyX3QgcnhfcmFkaW90YXApCiB7CisJaWVlZTgwMjExX3JhZGlv
dGFwX2F0dGFjaHYoaWMsIHRoLCB0bGVuLCAwLCB0eF9yYWRpb3RhcCwKKwkgICAgcmgsIHJsZW4s
IDAsIHJ4X3JhZGlvdGFwKTsKK30KKwordm9pZAoraWVlZTgwMjExX3JhZGlvdGFwX2F0dGFjaHYo
c3RydWN0IGllZWU4MDIxMWNvbSAqaWMsCisJc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFk
ZXIgKnRoLAorCWludCB0bGVuLCBpbnQgbl90eF92LCB1aW50MzJfdCB0eF9yYWRpb3RhcCwKKwlz
dHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciAqcmgsCisJaW50IHJsZW4sIGludCBuX3J4
X3YsIHVpbnQzMl90IHJ4X3JhZGlvdGFwKQorewogI2RlZmluZQlCKF92KQkoMTw8KF92KSkKIAlp
bnQgb2ZmOwogCkBAIC02Myw5ICs3NCw5IEBACiAJLyogY2FsY3VsYXRlIG9mZnNldCB0byBjaGFu
bmVsIGRhdGEgKi8KIAlvZmYgPSAtMTsKIAlpZiAodHhfcmFkaW90YXAgJiBCKElFRUU4MDIxMV9S
QURJT1RBUF9DSEFOTkVMKSkKLQkJb2ZmID0gcmFkaW90YXBfb2Zmc2V0KHRoLCBJRUVFODAyMTFf
UkFESU9UQVBfQ0hBTk5FTCk7CisJCW9mZiA9IHJhZGlvdGFwX29mZnNldCh0aCwgbl90eF92LCBJ
RUVFODAyMTFfUkFESU9UQVBfQ0hBTk5FTCk7CiAJZWxzZSBpZiAodHhfcmFkaW90YXAgJiBCKElF
RUU4MDIxMV9SQURJT1RBUF9YQ0hBTk5FTCkpCi0JCW9mZiA9IHJhZGlvdGFwX29mZnNldCh0aCwg
SUVFRTgwMjExX1JBRElPVEFQX1hDSEFOTkVMKTsKKwkJb2ZmID0gcmFkaW90YXBfb2Zmc2V0KHRo
LCBuX3R4X3YsIElFRUU4MDIxMV9SQURJT1RBUF9YQ0hBTk5FTCk7CiAJaWYgKG9mZiA9PSAtMSkg
ewogCQlpZl9wcmludGYoaWMtPmljX2lmcCwgIiVzOiBubyB0eCBjaGFubmVsLCByYWRpb3RhcCAw
eCV4IiwKIAkJICAgIF9fZnVuY19fLCB0eF9yYWRpb3RhcCk7CkBAIC03OSw5ICs5MCw5IEBACiAJ
LyogY2FsY3VsYXRlIG9mZnNldCB0byBjaGFubmVsIGRhdGEgKi8KIAlvZmYgPSAtMTsKIAlpZiAo
cnhfcmFkaW90YXAgJiBCKElFRUU4MDIxMV9SQURJT1RBUF9DSEFOTkVMKSkKLQkJb2ZmID0gcmFk
aW90YXBfb2Zmc2V0KHJoLCBJRUVFODAyMTFfUkFESU9UQVBfQ0hBTk5FTCk7CisJCW9mZiA9IHJh
ZGlvdGFwX29mZnNldChyaCwgbl9yeF92LCBJRUVFODAyMTFfUkFESU9UQVBfQ0hBTk5FTCk7CiAJ
ZWxzZSBpZiAocnhfcmFkaW90YXAgJiBCKElFRUU4MDIxMV9SQURJT1RBUF9YQ0hBTk5FTCkpCi0J
CW9mZiA9IHJhZGlvdGFwX29mZnNldChyaCwgSUVFRTgwMjExX1JBRElPVEFQX1hDSEFOTkVMKTsK
KwkJb2ZmID0gcmFkaW90YXBfb2Zmc2V0KHJoLCBuX3J4X3YsIElFRUU4MDIxMV9SQURJT1RBUF9Y
Q0hBTk5FTCk7CiAJaWYgKG9mZiA9PSAtMSkgewogCQlpZl9wcmludGYoaWMtPmljX2lmcCwgIiVz
OiBubyByeCBjaGFubmVsLCByYWRpb3RhcCAweCV4IiwKIAkJICAgIF9fZnVuY19fLCByeF9yYWRp
b3RhcCk7CkBAIC0yNjAsNyArMjcxLDggQEAKICAqIGtub3duIC0xIGlzIHJldHVybmVkLgogICov
CiBzdGF0aWMgaW50Ci1yYWRpb3RhcF9vZmZzZXQoc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9o
ZWFkZXIgKnJoLCBpbnQgaXRlbSkKK3JhZGlvdGFwX29mZnNldChzdHJ1Y3QgaWVlZTgwMjExX3Jh
ZGlvdGFwX2hlYWRlciAqcmgsCisgICAgaW50IG5fdmVuZG9yX2F0dHJpYnV0ZXMsIGludCBpdGVt
KQogewogCXN0YXRpYyBjb25zdCBzdHJ1Y3QgewogCQlzaXplX3QJYWxpZ24sIHdpZHRoOwpAQCAt
MzM0LDYgKzM0Niw4IEBACiAJaW50IG9mZiwgaTsKIAogCW9mZiA9IHNpemVvZihzdHJ1Y3QgaWVl
ZTgwMjExX3JhZGlvdGFwX2hlYWRlcik7CisJb2ZmICs9IG5fdmVuZG9yX2F0dHJpYnV0ZXMgKiAo
c2l6ZW9mKHVpbnQzMl90KSk7CisKIAlmb3IgKGkgPSAwOyBpIDwgSUVFRTgwMjExX1JBRElPVEFQ
X0VYVDsgaSsrKSB7CiAJCWlmICgocHJlc2VudCAmICgxPDxpKSkgPT0gMCkKIAkJCWNvbnRpbnVl
OwpJbmRleDogZGV2L2F0aC9hdGhfaGFsL2FyNTQxNi9hcjU0MTZfbWlzYy5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGRldi9hdGgvYXRoX2hhbC9hcjU0MTYvYXI1NDE2X21pc2MuYwkocmV2aXNpb24gMjMwODU1
KQorKysgZGV2L2F0aC9hdGhfaGFsL2FyNTQxNi9hcjU0MTZfbWlzYy5jCSh3b3JraW5nIGNvcHkp
CkBAIC03NzAsNiArNzcwLDcgQEAKIAogCU9TX1JFR19XUklURShhaCwgQVJfUEhZX1JBREFSXzAs
IHZhbCB8IEFSX1BIWV9SQURBUl8wX0VOQSk7CiAKKwkvKiBYWFggaXMgdGhpcyBhcm91bmQgdGhl
IGNvcnJlY3Qgd2F5PyEgKi8KIAlpZiAocGUtPnBlX3VzZWZpcjEyOCA9PSAxKQogCQlPU19SRUdf
Q0xSX0JJVChhaCwgQVJfUEhZX1JBREFSXzEsIEFSX1BIWV9SQURBUl8xX1VTRV9GSVIxMjgpOwog
CWVsc2UgaWYgKHBlLT5wZV91c2VmaXIxMjggPT0gMCkKSW5kZXg6IGRldi9hdGgvaWZfYXRoaW9j
dGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBkZXYvYXRoL2lmX2F0aGlvY3RsLmgJKHJldmlzaW9uIDIzMDg1
NSkKKysrIGRldi9hdGgvaWZfYXRoaW9jdGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDEwICsx
ODgsNTQgQEAKIAkoMSA8PCBJRUVFODAyMTFfUkFESU9UQVBfREJNX0FOVFNJR05BTCkJfCBcCiAJ
KDEgPDwgSUVFRTgwMjExX1JBRElPVEFQX0RCTV9BTlROT0lTRSkJfCBcCiAJKDEgPDwgSUVFRTgw
MjExX1JBRElPVEFQX1hDSEFOTkVMKQl8IFwKKwkoMSA8PCBJRUVFODAyMTFfUkFESU9UQVBfVkVO
RE9SRVhUKQl8IFwKKwkoMSA8PCBJRUVFODAyMTFfUkFESU9UQVBfRVhUKQkJfCBcCiAJMCkKIAor
LyoKKyAqIFRoaXMgaXMgcmVxdWlyZWQgdG8gYmUgYWxpZ25lZCB0byB0d28gYnl0ZXMuCisgKi8K
K3N0cnVjdCB2ZW5kb3Jfc3BhY2UgeworCXVfaW50OF90CW91aVszXTsKKwl1X2ludDhfdAlzdWJf
bmFtZXNwYWNlOworCXVfaW50MTZfdAlza2lwX2xlbmd0aDsKK30gX19wYWNrZWQ7CisKKy8qCisg
KiBUaGlzIGlzIGhpZ2hlciB0aGFuIHRoZSB2ZW5kb3IgYml0bWFwIHVzZWQgaW5zaWRlCisgKiB0
aGUgQXRoZXJvcyByZWZlcmVuY2UgY29kZWJhc2UuCisgKi8KKworLyogQml0IDggKi8KKyNkZWZp
bmUJQVRIX1JBRElPVEFQX1ZFTkRPUl9IRUFERVIJOAorCisvKgorICogQVRIX1JBRElPVEFQX1ZF
TkRPUl9IRUFERVIKKyAqCisgKiBUaGlzIGlzIHJlcXVpcmVkIHRvIGJlIGFsaWduZWQgdG8gZm91
ciBieXRlcy4KKyAqLworc3RydWN0IGF0aF9yYWRpb3RhcF92ZW5kb3JfaGRyIHsKKwl1X2ludDhf
dAl2aF92ZXJzaW9uOwkvKiAxICovCisJdV9pbnQ4X3QJdmhfcGh5ZXJyX2NvZGU7CisJdV9pbnQ4
X3QJdmhfcnN0YXR1czsKKwl1X2ludDhfdAl2aF9wYWQxWzFdOworfSBfX3BhY2tlZDsKKwogc3Ry
dWN0IGF0aF9yeF9yYWRpb3RhcF9oZWFkZXIgewotCXN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBf
aGVhZGVyIHdyX2loZHI7CisJc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgd3JfaWhk
cjsJLyogOCAqLworCS8qIFZlbmRvciBleHRlbnNpb24gaGVhZGVyIGJpdG1hcCAqLworCXVfaW50
MzJfdAl3cl9leHRfYml0bWFwOwkJLyogNCAqLworCisJLyoKKwkgKiBUaGlzIHBhZGRpbmcgaXMg
bmVlZGVkIGJlY2F1c2U6CisJICogKyB0aGUgcmFkaW90YXAgaGVhZGVyIGlzIDggYnl0ZXM7CisJ
ICogKyB0aGUgZXh0ZW5zaW9uIGJpdG1hcCBpcyA0IGJ5dGVzOworCSAqICsgdGhlIHRzZiBpcyA4
IGJ5dGVzLCBzbyBpdCBtdXN0IHN0YXJ0IG9uIGFuIDggYnl0ZQorCSAqICAgYm91bmRhcnkuCisJ
ICovCisJdV9pbnQzMl90CXdyX3BhZDE7CisKKwkvKiBOb3JtYWwgcmFkaW90YXAgZmllbGRzICov
CiAJdV9pbnQ2NF90CXdyX3RzZjsKIAl1X2ludDhfdAl3cl9mbGFnczsKIAl1X2ludDhfdAl3cl9y
YXRlOwpAQCAtMjAzLDYgKzI0NywxNyBAQAogCXVfaW50MTZfdAl3cl9jaGFuX2ZyZXE7CiAJdV9p
bnQ4X3QJd3JfY2hhbl9pZWVlOwogCWludDhfdAkJd3JfY2hhbl9tYXhwb3c7CisKKwkvKgorCSAq
IFZlbmRvciBoZWFkZXIgc2VjdGlvbiwgYXMgcmVxdWlyZWQgYnkgdGhlCisJICogcHJlc2VuY2Ug
b2YgdGhlIHZlbmRvciBleHRlbnNpb24gYml0IGFuZCBiaXRtYXAKKwkgKiBlbnRyeS4KKwkgKi8K
KwlzdHJ1Y3QgdmVuZG9yX3NwYWNlCQl3cl92aDsJLyogNiBieXRlcyAqLworCisJc3RydWN0IGF0
aF9yYWRpb3RhcF92ZW5kb3JfaGRyCXdyX3Y7CS8qIDQgYnl0ZXMgKi8KKworCS8qIFhYWCBwYWRk
aW5nIG5lZWRlZD8gKi8KIH0gX19wYWNrZWQ7CiAKICNkZWZpbmUgQVRIX1RYX1JBRElPVEFQX1BS
RVNFTlQgKAkJXApJbmRleDogZGV2L2F0aC9pZl9hdGguYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkZXYvYXRo
L2lmX2F0aC5jCShyZXZpc2lvbiAyMzA4NTUpCisrKyBkZXYvYXRoL2lmX2F0aC5jCSh3b3JraW5n
IGNvcHkpCkBAIC03NjYsMTAgKzc2NiwxNCBAQAogCWljLT5pY19hZGRiYV9zdG9wID0gYXRoX2Fk
ZGJhX3N0b3A7CiAJaWMtPmljX2Jhcl9yZXNwb25zZSA9IGF0aF9iYXJfcmVzcG9uc2U7CiAKLQlp
ZWVlODAyMTFfcmFkaW90YXBfYXR0YWNoKGljLAotCSAgICAmc2MtPnNjX3R4X3RoLnd0X2loZHIs
IHNpemVvZihzYy0+c2NfdHhfdGgpLAorCS8qCisJICogVGhlcmUncyBvbmUgdmVuZG9yIGJpdG1h
cCBlbnRyeSBpbiB0aGUgUlggcmFkaW90YXAKKwkgKiBoZWFkZXI7IG1ha2Ugc3VyZSB0aGF0J3Mg
dGFrZW4gaW50byBhY2NvdW50LgorCSAqLworCWllZWU4MDIxMV9yYWRpb3RhcF9hdHRhY2h2KGlj
LAorCSAgICAmc2MtPnNjX3R4X3RoLnd0X2loZHIsIHNpemVvZihzYy0+c2NfdHhfdGgpLCAwLAog
CQlBVEhfVFhfUkFESU9UQVBfUFJFU0VOVCwKLQkgICAgJnNjLT5zY19yeF90aC53cl9paGRyLCBz
aXplb2Yoc2MtPnNjX3J4X3RoKSwKKwkgICAgJnNjLT5zY19yeF90aC53cl9paGRyLCBzaXplb2Yo
c2MtPnNjX3J4X3RoKSwgMSwKIAkJQVRIX1JYX1JBRElPVEFQX1BSRVNFTlQpOwogCiAJLyoKQEAg
LTM4ODQsNiArMzg4OCwzNCBAQAogfQogCiBzdGF0aWMgdm9pZAorYXRoX3J4X3RhcF92ZW5kb3Io
c3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCBtYnVmICptLAorICAgIGNvbnN0IHN0cnVjdCBhdGhf
cnhfc3RhdHVzICpycywgdV9pbnQ2NF90IHRzZiwgaW50MTZfdCBuZikKK3sKKwlzdHJ1Y3QgYXRo
X3NvZnRjICpzYyA9IGlmcC0+aWZfc29mdGM7CisKKwkvKiBGaWxsIGluIHRoZSBleHRlbnNpb24g
Yml0bWFwICovCisJc2MtPnNjX3J4X3RoLndyX2V4dF9iaXRtYXAgPSBodG9sZTMyKDEgPDwgQVRI
X1JBRElPVEFQX1ZFTkRPUl9IRUFERVIpOworCisJLyogRmlsbCBpbiB0aGUgdmVuZG9yIGhlYWRl
ciAqLworCXNjLT5zY19yeF90aC53cl92aC5vdWlbMF0gPSAweDdmOworCXNjLT5zY19yeF90aC53
cl92aC5vdWlbMV0gPSAweDAzOworCXNjLT5zY19yeF90aC53cl92aC5vdWlbMl0gPSAweDAwOwor
CisJLyogWFhYIHdoYXQgc2hvdWxkIHRoaXMgYmU/ICovCisJc2MtPnNjX3J4X3RoLndyX3ZoLnN1
Yl9uYW1lc3BhY2UgPSAwOworCXNjLT5zY19yeF90aC53cl92aC5za2lwX2xlbmd0aCA9CisJICAg
IGh0b2xlMTYoc2l6ZW9mKHN0cnVjdCBhdGhfcmFkaW90YXBfdmVuZG9yX2hkcikpOworCisJLyog
cGh5ZXJyIGluZm8gKi8KKwlzYy0+c2NfcnhfdGgud3Jfdi52aF92ZXJzaW9uID0gMTsKKwlzYy0+
c2NfcnhfdGgud3Jfdi52aF9yc3RhdHVzID0gcnMtPnJzX3N0YXR1czsKKwlpZiAocnMtPnJzX3N0
YXR1cyAmIEhBTF9SWEVSUl9QSFkpCisJCXNjLT5zY19yeF90aC53cl92LnZoX3BoeWVycl9jb2Rl
ID0gcnMtPnJzX3BoeWVycjsKKwllbHNlCisJCXNjLT5zY19yeF90aC53cl92LnZoX3BoeWVycl9j
b2RlID0gMDsKK30KKworc3RhdGljIHZvaWQKIGF0aF9yeF90YXAoc3RydWN0IGlmbmV0ICppZnAs
IHN0cnVjdCBtYnVmICptLAogCWNvbnN0IHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdV9pbnQ2
NF90IHRzZiwgaW50MTZfdCBuZikKIHsKQEAgLTQxNTYsNiArNDE4OCw3IEBACiAJCQkJbS0+bV9w
a3RoZHIubGVuID0gbS0+bV9sZW4gPSBsZW47CiAJCQkJYmYtPmJmX20gPSBOVUxMOwogCQkJCWF0
aF9yeF90YXAoaWZwLCBtLCBycywgcnN0YW1wLCBuZik7CisJCQkJYXRoX3J4X3RhcF92ZW5kb3Io
aWZwLCBtLCBycywgcnN0YW1wLCBuZik7CiAJCQkJaWVlZTgwMjExX3JhZGlvdGFwX3J4X2FsbChp
YywgbSk7CiAJCQkJbV9mcmVlbShtKTsKIAkJCX0K
--20cf307f3092b43fc504b81bd36f--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonSrcSQmZeENgH1fagnn6DOMhX6rC-n9=dOtypTabcSLg>