Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Mar 2012 11:28:57 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        freebsd-wireless@freebsd.org
Subject:   Request for testing: BAR TX handling for ath(4)
Message-ID:  <CAJ-VmonZZZoY5iRDGLrtNjFLy5Fc5NajhkfdqSzi=s4SF2n5rQ@mail.gmail.com>

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

Hi all,

This patch is my first (dirty) attempt at implementing BAR TX for FreeBSD.

What it does:

* adds two state flags for ath_tid - one that indicates that a BAR is
pending, another that indicates that a BAR TX has been attempted.
* whenever a frame is dropped, transition into the BAR pending state
and pause the queue - but it's paused once, on the state transition,
since multiple frames inside the BAW may be dropped;
* .. then, don't transmit anything from that TID until all the frames
in the hardware queue for that TID are completed.
* Check whether we need to send the BAR upon completion of any frame
it an aggregation session (aggregate or unaggregate) - as there may
have been more than one frame pending on the hardware queue, and only
one out of a larger set may have failed.

I'm not entirely comfortable with this solution - especially with the
silly locking - but it does work.

The main downside is that the call to ieee80211_send_bar() can fail if
the ic_raw_xmit function or the mbuf allocation functions return
errors. Now, what I'm seeing with live tests is that sometimes, the
sender side will fail one of these and the BAR attempt will fail. For
now this code just ignores it and continues along it's merry way. It
_should_ drop out of aggregation.

If ieee80211_send_bar() does fail to successfully transmit the BAR, it
will eventually transition the session out of aggregation. However, if
the initial call to ieee80211_send_bar() fails, then the driver has to
handle it itself.

I'll fix the behaviour or use of ieee80211_send_bar() in a future
commit. I'd just like to get the BAR suspend/resume stuff tidied up
and in the tree so I'm one step closer to enabling ath 11n by default.

TL;DR - if you're testing out FreeBSD ath(4) 802.11n support, please
enable this patch and let me know what happens.

Thanks!


Adrian

--047d7b33cf7c56c94404bc8e2115
Content-Type: application/octet-stream; name="ath-bar-tx-2.diff"
Content-Disposition: attachment; filename="ath-bar-tx-2.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h0gzf6180

SW5kZXg6IHN5cy9kZXYvYXRoL2lmX2F0aHZhci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYvYXRo
L2lmX2F0aHZhci5oCShyZXZpc2lvbiAyMzM2NzMpCisrKyBzeXMvZGV2L2F0aC9pZl9hdGh2YXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw4IEBACiAJVEFJTFFfRU5UUlkoYXRoX3Rp
ZCkJYXhxX3FlbGVtOwogCWludAkJCXNjaGVkOwogCWludAkJCXBhdXNlZDsJLyogPjAgaWYgdGhl
IFRJRCBoYXMgYmVlbiBwYXVzZWQgKi8KKwlpbnQJCQliYXJfd2FpdDsJLyogd2FpdGluZyBmb3Ig
QkFSICovCisJaW50CQkJYmFyX3R4OwkJLyogQkFSIFRYZWQgKi8KIAogCS8qCiAJICogSXMgdGhl
IFRJRCBiZWluZyBjbGVhbmVkIHVwIGFmdGVyIGEgdHJhbnNpdGlvbgpJbmRleDogc3lzL2Rldi9h
dGgvaWZfYXRoX3R4LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9hdGgvaWZfYXRoX3R4LmMJKHJl
dmlzaW9uIDIzMzY3MykKKysrIHN5cy9kZXYvYXRoL2lmX2F0aF90eC5jCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTk3LDExICsyNTk3LDExIEBACiBzdGF0aWMgdm9pZAogYXRoX3R4X3RpZF9wYXVzZShz
dHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90aWQgKnRpZCkKIHsKLQlBVEhfVFhRX0xP
Q0soc2MtPnNjX2FjMnFbdGlkLT5hY10pOworCisJQVRIX1RYUV9MT0NLX0FTU0VSVChzYy0+c2Nf
YWMycVt0aWQtPmFjXSk7CiAJdGlkLT5wYXVzZWQrKzsKIAlEUFJJTlRGKHNjLCBBVEhfREVCVUdf
U1dfVFhfQ1RSTCwgIiVzOiBwYXVzZWQgPSAlZFxuIiwKIAkgICAgX19mdW5jX18sIHRpZC0+cGF1
c2VkKTsKLQlBVEhfVFhRX1VOTE9DSyhzYy0+c2NfYWMycVt0aWQtPmFjXSk7CiB9CiAKIC8qCkBA
IC0yNjI4LDYgKzI2MjgsMTQ2IEBACiB9CiAKIC8qCisgKiBTdXNwZW5kIHRoZSBxdWV1ZSBiZWNh
dXNlIHdlIG5lZWQgdG8gVFggYSBCQVIuCisgKi8KK3N0YXRpYyB2b2lkCithdGhfdHhfdGlkX2Jh
cl9zdXNwZW5kKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3RpZCAqdGlkKQorewor
CUFUSF9UWFFfTE9DS19BU1NFUlQoc2MtPnNjX2FjMnFbdGlkLT5hY10pOworCisJZGV2aWNlX3By
aW50ZihzYy0+c2NfZGV2LCAiJXM6IHRpZD0lcCwgY2FsbGVkXG4iLCBfX2Z1bmNfXywgdGlkKTsK
KworCS8qIFdlIHNob3VsZG4ndCBiZSBjYWxsZWQgd2hlbiBiYXJfdHggaXMgMSAqLworCWlmICh0
aWQtPmJhcl90eCkgeworCQlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYsICIlczogYmFyX3R4IGlz
IDE/IVxuIiwKKwkJICAgIF9fZnVuY19fKTsKKwl9CisKKwkvKiBJZiB3ZSd2ZSBhbHJlYWR5IGJl
ZW4gY2FsbGVkLCBqdXN0IGJlIHBhdGllbnQuICovCisJaWYgKHRpZC0+YmFyX3dhaXQpCisJCXJl
dHVybjsKKworCS8qIFdhaXQhICovCisJdGlkLT5iYXJfd2FpdCA9IDE7CisKKwkvKiBPbmx5IG9u
ZSBwYXVzZSwgbm8gbWF0dGVyIGhvdyBtYW55IGZyYW1lcyBmYWlsICovCisJYXRoX3R4X3RpZF9w
YXVzZShzYywgdGlkKTsKK30KKworLyoKKyAqIFdlJ3ZlIGZpbmlzaGVkIHdpdGggQkFSIGhhbmRs
aW5nIC0gZWl0aGVyIHdlIHN1Y2NlZWRlZCBvcgorICogZmFpbGVkLiBFaXRoZXIgd2F5LCB1bnN1
c3BlbmQgVFguCisgKi8KK3N0YXRpYyB2b2lkCithdGhfdHhfdGlkX2Jhcl91bnN1c3BlbmQoc3Ry
dWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfdGlkICp0aWQpCit7CisJQVRIX1RYUV9MT0NL
X0FTU0VSVChzYy0+c2NfYWMycVt0aWQtPmFjXSk7CisKKwlkZXZpY2VfcHJpbnRmKHNjLT5zY19k
ZXYsICIlczogdGlkPSVwLCBjYWxsZWRcbiIsIF9fZnVuY19fLCB0aWQpOworCisJaWYgKHRpZC0+
YmFyX3R4ID09IDAgfHwgdGlkLT5iYXJfd2FpdCA9PSAwKSB7CisJCWRldmljZV9wcmludGYoc2Mt
PnNjX2RldiwgIiVzOiBiYXJfdHg9JWQsIGJhcl93YWl0PSVkOiA/XG4iLAorCQkgICAgX19mdW5j
X18sIHRpZC0+YmFyX3R4LCB0aWQtPmJhcl93YWl0KTsKKwl9CisKKwl0aWQtPmJhcl90eCA9IHRp
ZC0+YmFyX3dhaXQgPSAwOworCWF0aF90eF90aWRfcmVzdW1lKHNjLCB0aWQpOworfQorCisvKgor
ICogUmV0dXJuIHdoZXRoZXIgd2UncmUgcmVhZHkgdG8gVFggYSBCQVIgZnJhbWUuCisgKgorICog
UmVxdWlyZXMgdGhlIFRJRCBsb2NrIGJlIGhlbGQuCisgKi8KK3N0YXRpYyBpbnQKK2F0aF90eF90
aWRfYmFyX3R4X3JlYWR5KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3RpZCAqdGlk
KQoreworCisJQVRIX1RYUV9MT0NLX0FTU0VSVChzYy0+c2NfYWMycVt0aWQtPmFjXSk7CisKKwlp
ZiAodGlkLT5iYXJfd2FpdCA9PSAwIHx8IHRpZC0+aHdxX2RlcHRoID4gMCkKKwkJcmV0dXJuICgw
KTsKKworCXJldHVybiAoMSk7Cit9CisKKy8qCisgKiBDaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50
IFRJRCBpcyByZWFkeSB0byBoYXZlIGEgQkFSCisgKiBUWGVkIGFuZCBpZiBzbywgZG8gdGhlIFRY
LgorICoKKyAqIFNpbmNlIHRoZSBUSUQvVFhRIGxvY2sgY2FuJ3QgYmUgaGVsZCBkdXJpbmcgYSBj
YWxsIHRvCisgKiBpZWVlODAyMTFfc2VuZF9iYXIoKSwgd2UgaGF2ZSB0byBkbyB0aGUgZGlydHkg
dGhpbmcgb2YgdW5sb2NraW5nIGl0LAorICogc2VuZGluZyB0aGUgQkFSIGFuZCBsb2NraW5nIGl0
IGFnYWluLgorICoKKyAqIEV2ZW50dWFsbHksIHRoZSBjb2RlIHRvIHNlbmQgdGhlIEJBUiBzaG91
bGQgYmUgYnJva2VuIG91dAorICogZnJvbSB0aGlzIHJvdXRpbmUgc28gdGhlIGxvY2sgZG9lc24n
dCBoYXZlIHRvIGJlIHJlYWNxdWlyZWQKKyAqIGp1c3QgdG8gYmUgaW1tZWRpYXRlbHkgZHJvcHBl
ZCBieSB0aGUgY2FsbGVyLgorICovCitzdGF0aWMgdm9pZAorYXRoX3R4X3RpZF9iYXJfdHgoc3Ry
dWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfdGlkICp0aWQpCit7CisJc3RydWN0IGllZWU4
MDIxMV90eF9hbXBkdSAqdGFwOworCisJQVRIX1RYUV9MT0NLX0FTU0VSVChzYy0+c2NfYWMycVt0
aWQtPmFjXSk7CisKKwlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYsICIlczogdGlkPSVwLCBjYWxs
ZWRcbiIsIF9fZnVuY19fLCB0aWQpOworCisJdGFwID0gYXRoX3R4X2dldF90eF90aWQodGlkLT5h
biwgdGlkLT50aWQpOworCisJLyoKKwkgKiBUaGlzIGlzIGFuIGVycm9yIGNvbmRpdGlvbiEKKwkg
Ki8KKwlpZiAodGlkLT5iYXJfd2FpdCA9PSAwIHx8IHRpZC0+YmFyX3R4ID09IDEpIHsKKwkJZGV2
aWNlX3ByaW50ZihzYy0+c2NfZGV2LAorCQkgICAgIiVzOiB0aWQ9JXAsIGJhcl90eD0lZCwgYmFy
X3dhaXQ9JWQ6ID9cbiIsCisJCSAgICBfX2Z1bmNfXywKKwkJICAgIHRpZCwKKwkJICAgIHRpZC0+
YmFyX3R4LAorCQkgICAgdGlkLT5iYXJfd2FpdCk7CisJCXJldHVybjsKKwl9CisKKwkvKiBEb24n
dCBkbyBhbnl0aGluZyBpZiB3ZSBzdGlsbCBoYXZlIHBlbmRpbmcgZnJhbWVzICovCisJaWYgKHRp
ZC0+aHdxX2RlcHRoID4gMCkgeworCQlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYsCisJCSAgICAi
JXM6IHRpZD0lcCwgaHdxX2RlcHRoPSVkLCB3YWl0aW5nXG4iLAorCQkgICAgX19mdW5jX18sCisJ
CSAgICB0aWQsCisJCSAgICB0aWQtPmh3cV9kZXB0aCk7CisJCXJldHVybjsKKwl9CisKKwkvKiBX
ZSdyZSBub3cgYWJvdXQgdG8gVFggKi8KKwl0aWQtPmJhcl90eCA9IDE7CisKKwkvKgorCSAqIENh
bGN1bGF0ZSBuZXcgQkFXIGxlZnQgZWRnZSwgbm93IHRoYXQgYWxsIGZyYW1lcyBoYXZlIGVpdGhl
cgorCSAqIHN1Y2NlZWRlZCBvciBmYWlsZWQuCisJICoKKwkgKiBYWFggdmVyaWZ5IHRoaXMgaXMg
X2FjdHVhbGx5XyB0aGUgdmFsaWQgdmFsdWUgdG8gYmVnaW4gYXQhCisJICovCisJZGV2aWNlX3By
aW50ZihzYy0+c2NfZGV2LCAiJXM6IHRpZD0lcCwgbmV3IEJBVyBsZWZ0IGVkZ2U9JWRcbiIsCisJ
ICAgIF9fZnVuY19fLCB0aWQsIHRhcC0+dHhhX3N0YXJ0KTsKKworCS8qIFRyeSBzZW5kaW5nIHRo
ZSBCQVIgZnJhbWUgKi8KKwkvKiBXZSBjYW4ndCBob2xkIHRoZSBsb2NrIGhlcmUhICovCisKKwlB
VEhfVFhRX1VOTE9DSyhzYy0+c2NfYWMycVt0aWQtPmFjXSk7CisJaWYgKGllZWU4MDIxMV9zZW5k
X2JhcigmdGlkLT5hbi0+YW5fbm9kZSwgdGFwLCB0YXAtPnR4YV9zdGFydCkgPT0gMCkgeworCQkv
KiBTdWNjZXNzPyBOb3cgd2Ugd2FpdCBmb3Igbm90aWZpY2F0aW9uIHRoYXQgaXQncyBkb25lICov
CisJCUFUSF9UWFFfTE9DSyhzYy0+c2NfYWMycVt0aWQtPmFjXSk7CisJCXJldHVybjsKKwl9CisK
KwkvKiBGYWlsdXJlPyBGb3Igbm93LCB3YXJuIGxvdWRseSBhbmQgY29udGludWUgKi8KKwlBVEhf
VFhRX0xPQ0soc2MtPnNjX2FjMnFbdGlkLT5hY10pOworCWRldmljZV9wcmludGYoc2MtPnNjX2Rl
diwgIiVzOiB0aWQ9JXAsIGZhaWxlZCB0byBUWCBCQVIsIGNvbnRpbnVlIVxuIiwKKwkgICAgX19m
dW5jX18sIHRpZCk7CisJYXRoX3R4X3RpZF9iYXJfdW5zdXNwZW5kKHNjLCB0aWQpOworfQorCisK
Ky8qCiAgKiBGcmVlIGFueSBwYWNrZXRzIGN1cnJlbnRseSBwZW5kaW5nIGluIHRoZSBzb2Z0d2Fy
ZSBUWCBxdWV1ZS4KICAqCiAgKiBUaGlzIHdpbGwgYmUgY2FsbGVkIHdoZW4gYSBub2RlIGlzIGJl
aW5nIGRlbGV0ZWQuCkBAIC0zMDc2LDcgKzMyMTYsNiBAQAogCWludCB0aWQgPSBiZi0+YmZfc3Rh
dGUuYmZzX3RpZDsKIAlzdHJ1Y3QgYXRoX3RpZCAqYXRpZCA9ICZhbi0+YW5fdGlkW3RpZF07CiAJ
c3RydWN0IGllZWU4MDIxMV90eF9hbXBkdSAqdGFwOwotCWludCB0eHNlcTsKIAogCUFUSF9UWFFf
TE9DSyhzYy0+c2NfYWMycVthdGlkLT5hY10pOwogCkBAIC0zMTE3LDE4ICszMjU2LDE0IEBACiAJ
CX0KIAkJYmYtPmJmX3N0YXRlLmJmc19kb2JhdyA9IDA7CiAKLQkJLyogU2VuZCBCQVIgZnJhbWUg
Ki8KLQkJLyoKLQkJICogVGhpcydsbCBlbmQgdXAgZ29pbmcgaW50byBuZXQ4MDIxMSBhbmQgYmFj
ayBvdXQKLQkJICogYWdhaW4sIHZpYSBpYy0+aWNfcmF3X3htaXQoKS4KLQkJICovCi0JCXR4c2Vx
ID0gdGFwLT50eGFfc3RhcnQ7Ci0JCUFUSF9UWFFfVU5MT0NLKHNjLT5zY19hYzJxW2F0aWQtPmFj
XSk7CisJCS8qIFN1c3BlbmQgdGhlIFRYIHF1ZXVlIGFuZCBnZXQgcmVhZHkgdG8gc2VuZCB0aGUg
QkFSICovCisJCWF0aF90eF90aWRfYmFyX3N1c3BlbmQoc2MsIGF0aWQpOwogCi0JCWRldmljZV9w
cmludGYoc2MtPnNjX2RldiwKLQkJICAgICIlczogVElEICVkOiBzZW5kIEJBUjsgc2VxICVkXG4i
LCBfX2Z1bmNfXywgdGlkLCB0eHNlcSk7CisJCS8qIFNlbmQgdGhlIEJBUiBpZiB0aGVyZSBhcmUg
bm8gb3RoZXIgZnJhbWVzIHdhaXRpbmcgKi8KKwkJaWYgKGF0aF90eF90aWRfYmFyX3R4X3JlYWR5
KHNjLCBhdGlkKSkKKwkJCWF0aF90eF90aWRfYmFyX3R4KHNjLCBhdGlkKTsKIAotCQkvKiBYWFgg
VE9ETzogc2VuZCBCQVIgKi8KKwkJQVRIX1RYUV9VTkxPQ0soc2MtPnNjX2FjMnFbYXRpZC0+YWNd
KTsKIAogCQkvKiBGcmVlIGJ1ZmZlciwgYmYgaXMgZnJlZSBhZnRlciB0aGlzIGNhbGwgKi8KIAkJ
YXRoX3R4X2RlZmF1bHRfY29tcChzYywgYmYsIDApOwpAQCAtMzE0OCw2ICszMjgzLDkgQEAKIAkg
Ki8KIAlBVEhfVFhRX0lOU0VSVF9IRUFEKGF0aWQsIGJmLCBiZl9saXN0KTsKIAlhdGhfdHhfdGlk
X3NjaGVkKHNjLCBhdGlkKTsKKwkvKiBTZW5kIHRoZSBCQVIgaWYgdGhlcmUgYXJlIG5vIG90aGVy
IGZyYW1lcyB3YWl0aW5nICovCisJaWYgKGF0aF90eF90aWRfYmFyX3R4X3JlYWR5KHNjLCBhdGlk
KSkKKwkJYXRoX3R4X3RpZF9iYXJfdHgoc2MsIGF0aWQpOwogCiAJQVRIX1RYUV9VTkxPQ0soc2Mt
PnNjX2FjMnFbYXRpZC0+YWNdKTsKIH0KQEAgLTMyNzcsMTcgKzM0MTUsMjAgQEAKIAkgKiBpbiB0
aGUgaWZuZXQgVFggY29udGV4dCBvciByYXcgVFggY29udGV4dC4pCiAJICovCiAJaWYgKGRyb3Bz
KSB7Ci0JCWludCB0eHNlcSA9IHRhcC0+dHhhX3N0YXJ0OwotCQlBVEhfVFhRX1VOTE9DSyhzYy0+
c2NfYWMycVt0aWQtPmFjXSk7Ci0JCWRldmljZV9wcmludGYoc2MtPnNjX2RldiwKLQkJICAgICIl
czogVElEICVkOiBzZW5kIEJBUjsgc2VxICVkXG4iLAotCQkgICAgX19mdW5jX18sIHRpZC0+dGlk
LCB0eHNlcSk7Ci0KLQkJLyogWFhYIFRPRE86IHNlbmQgQkFSICovCi0JfSBlbHNlIHsKLQkJQVRI
X1RYUV9VTkxPQ0soc2MtPnNjX2FjMnFbdGlkLT5hY10pOworCQkvKiBTdXNwZW5kIHRoZSBUWCBx
dWV1ZSBhbmQgZ2V0IHJlYWR5IHRvIHNlbmQgdGhlIEJBUiAqLworCQlhdGhfdHhfdGlkX2Jhcl9z
dXNwZW5kKHNjLCB0aWQpOwogCX0KIAorCUFUSF9UWFFfVU5MT0NLKHNjLT5zY19hYzJxW3RpZC0+
YWNdKTsKKworCS8qCisJICogU2VuZCBCQVIgaWYgcmVxdWlyZWQKKwkgKi8KKwlBVEhfVFhRX0xP
Q0soc2MtPnNjX2FjMnFbdGlkLT5hY10pOworCWlmIChhdGhfdHhfdGlkX2Jhcl90eF9yZWFkeShz
YywgdGlkKSkKKwkJYXRoX3R4X3RpZF9iYXJfdHgoc2MsIHRpZCk7CisJQVRIX1RYUV9VTkxPQ0so
c2MtPnNjX2FjMnFbdGlkLT5hY10pOworCiAJLyogQ29tcGxldGUgZnJhbWVzIHdoaWNoIGVycm9y
ZWQgb3V0ICovCiAJd2hpbGUgKChiZiA9IFRBSUxRX0ZJUlNUKCZiZl9jcSkpICE9IE5VTEwpIHsK
IAkJVEFJTFFfUkVNT1ZFKCZiZl9jcSwgYmYsIGJmX2xpc3QpOwpAQCAtMzMyNyw2ICszNDY4LDEw
IEBACiAJCWF0aWQtPmNsZWFudXBfaW5wcm9ncmVzcyA9IDA7CiAJCWF0aF90eF90aWRfcmVzdW1l
KHNjLCBhdGlkKTsKIAl9CisKKwkvKiBTZW5kIEJBUiBpZiByZXF1aXJlZCAqLworCWlmIChhdGhf
dHhfdGlkX2Jhcl90eF9yZWFkeShzYywgYXRpZCkpCisJCWF0aF90eF90aWRfYmFyX3R4KHNjLCBh
dGlkKTsKIAlBVEhfVFhRX1VOTE9DSyhzYy0+c2NfYWMycVthdGlkLT5hY10pOwogCiAJLyogSGFu
ZGxlIGZyYW1lIGNvbXBsZXRpb24gKi8KQEAgLTM1NDEsOSArMzY4NiwxMCBAQAogCSAqIHNlbmQg
YmFyIGlmIHdlIGRyb3BwZWQgYW55IGZyYW1lcwogCSAqLwogCWlmIChkcm9wcykgewotCQlkZXZp
Y2VfcHJpbnRmKHNjLT5zY19kZXYsCi0JCSAgICAiJXM6IFRJRCAlZDogc2VuZCBCQVI7IHNlcSAl
ZFxuIiwgX19mdW5jX18sIHRpZCwgdHhzZXEpOwotCQkvKiBYWFggVE9ETzogc2VuZCBCQVIgKi8K
KwkJLyogU3VzcGVuZCB0aGUgVFggcXVldWUgYW5kIGdldCByZWFkeSB0byBzZW5kIHRoZSBCQVIg
Ki8KKwkJQVRIX1RYUV9MT0NLKHNjLT5zY19hYzJxW2F0aWQtPmFjXSk7CisJCWF0aF90eF90aWRf
YmFyX3N1c3BlbmQoc2MsIGF0aWQpOworCQlBVEhfVFhRX1VOTE9DSyhzYy0+c2NfYWMycVthdGlk
LT5hY10pOwogCX0KIAogCS8qIFByZXBlbmQgYWxsIGZyYW1lcyB0byB0aGUgYmVnaW5uaW5nIG9m
IHRoZSBxdWV1ZSAqLwpAQCAtMzU1OCw2ICszNzA0LDE0IEBACiAJRFBSSU5URihzYywgQVRIX0RF
QlVHX1NXX1RYX0FHR1IsCiAJICAgICIlczogdHhhX3N0YXJ0IG5vdyAlZFxuIiwgX19mdW5jX18s
IHRhcC0+dHhhX3N0YXJ0KTsKIAorCS8qCisJICogU2VuZCBCQVIgaWYgcmVxdWlyZWQKKwkgKi8K
KwlBVEhfVFhRX0xPQ0soc2MtPnNjX2FjMnFbYXRpZC0+YWNdKTsKKwlpZiAoYXRoX3R4X3RpZF9i
YXJfdHhfcmVhZHkoc2MsIGF0aWQpKQorCQlhdGhfdHhfdGlkX2Jhcl90eChzYywgYXRpZCk7CisJ
QVRIX1RYUV9VTkxPQ0soc2MtPnNjX2FjMnFbYXRpZC0+YWNdKTsKKwogCS8qIERvIGRlZmVycmVk
IGNvbXBsZXRpb24gKi8KIAl3aGlsZSAoKGJmID0gVEFJTFFfRklSU1QoJmJmX2NxKSkgIT0gTlVM
TCkgewogCQlUQUlMUV9SRU1PVkUoJmJmX2NxLCBiZiwgYmZfbGlzdCk7CkBAIC0zNjUxLDYgKzM4
MDUsMTIgQEAKIAkJCSAgICBfX2Z1bmNfXywgU0VRTk8oYmYtPmJmX3N0YXRlLmJmc19zZXFubykp
OwogCX0KIAorCS8qCisJICogU2VuZCBCQVIgaWYgcmVxdWlyZWQKKwkgKi8KKwlpZiAoYXRoX3R4
X3RpZF9iYXJfdHhfcmVhZHkoc2MsIGF0aWQpKQorCQlhdGhfdHhfdGlkX2Jhcl90eChzYywgYXRp
ZCk7CisKIAlBVEhfVFhRX1VOTE9DSyhzYy0+c2NfYWMycVthdGlkLT5hY10pOwogCiAJYXRoX3R4
X2RlZmF1bHRfY29tcChzYywgYmYsIGZhaWwpOwpAQCAtNDA3OSw3ICs0MjM5LDkgQEAKIAkgKiBp
dCdsbCBiZSAiYWZ0ZXIiIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIEJBVyBhbmQgdGh1cyBpdCdsbAog
CSAqIGZhbGwgd2l0aGluIGl0LgogCSAqLworCUFUSF9UWFFfTE9DSyhzYy0+c2NfYWMycVthdGlk
LT50aWRdKTsKIAlhdGhfdHhfdGlkX3BhdXNlKHNjLCBhdGlkKTsKKwlBVEhfVFhRX1VOTE9DSyhz
Yy0+c2NfYWMycVthdGlkLT50aWRdKTsKIAogCURQUklOVEYoc2MsIEFUSF9ERUJVR19TV19UWF9D
VFJMLAogCSAgICAiJXM6IGNhbGxlZDsgZGlhbG9ndG9rZW49JWQsIGJhcGFyYW1zZXQ9JWQsIGJh
dGltZW91dD0lZFxuIiwKQEAgLTQxNjUsNyArNDMyNyw5IEBACiAJRFBSSU5URihzYywgQVRIX0RF
QlVHX1NXX1RYX0NUUkwsICIlczogY2FsbGVkXG4iLCBfX2Z1bmNfXyk7CiAKIAkvKiBQYXVzZSBU
SUQgdHJhZmZpYyBlYXJseSwgc28gdGhlcmUgYXJlbid0IGFueSByYWNlcyAqLworCUFUSF9UWFFf
TE9DSyhzYy0+c2NfYWMycVthdGlkLT50aWRdKTsKIAlhdGhfdHhfdGlkX3BhdXNlKHNjLCBhdGlk
KTsKKwlBVEhfVFhRX1VOTE9DSyhzYy0+c2NfYWMycVthdGlkLT50aWRdKTsKIAogCS8qIFRoZXJl
J3Mgbm8gbmVlZCB0byBob2xkIHRoZSBUWFEgbG9jayBoZXJlICovCiAJc2MtPnNjX2FkZGJhX3N0
b3AobmksIHRhcCk7CkBAIC00MjEyLDcgKzQzNzYsNyBAQAogCSAqLwogCWlmIChzdGF0dXMgPT0g
MCB8fCBhdHRlbXB0cyA9PSA1MCkgewogCQlBVEhfVFhRX0xPQ0soc2MtPnNjX2FjMnFbYXRpZC0+
YWNdKTsKLQkJYXRoX3R4X3RpZF9yZXN1bWUoc2MsIGF0aWQpOworCQlhdGhfdHhfdGlkX2Jhcl91
bnN1c3BlbmQoc2MsIGF0aWQpOwogCQlBVEhfVFhRX1VOTE9DSyhzYy0+c2NfYWMycVthdGlkLT5h
Y10pOwogCX0KIH0K
--047d7b33cf7c56c94404bc8e2115--



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