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>