From owner-freebsd-wireless@FreeBSD.ORG Fri Feb 10 07:18:15 2012 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B55AD1065670; Fri, 10 Feb 2012 07:18:15 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-wi0-f182.google.com (mail-wi0-f182.google.com [209.85.212.182]) by mx1.freebsd.org (Postfix) with ESMTP id 1018F8FC0A; Fri, 10 Feb 2012 07:18:14 +0000 (UTC) Received: by wibhn14 with SMTP id hn14so2641657wib.13 for ; Thu, 09 Feb 2012 23:18:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=bV6n6EQB1ACI5vXMuxw8iT0Z4o6qcO6VcAmNPzvH4ts=; b=GPpw75WJCteBfAjYarVRQp8WKqkksx9r6VN5W8rWn1emXsj7A0ABAXV897j2YQwSY4 bGg5a/DwtDssYv+6UqHfQgsKdHEvTWI4OOIdiVlhHa6d1WhMLmM/fDl0MJaglljM8Hnj WIjWorgQwAUNY0NylkjkbJaz4MKfOWFjVgw1I= MIME-Version: 1.0 Received: by 10.180.96.8 with SMTP id do8mr1282559wib.21.1328858293993; Thu, 09 Feb 2012 23:18:13 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.216.175.136 with HTTP; Thu, 9 Feb 2012 23:18:13 -0800 (PST) In-Reply-To: References: <201202062059.16816.bschmidt@freebsd.org> Date: Thu, 9 Feb 2012 23:18:13 -0800 X-Google-Sender-Auth: obJq4NO3ciSZF9x8DZ6gHZAy40I Message-ID: From: Adrian Chadd To: Bernhard Schmidt Content-Type: multipart/mixed; boundary=f46d0444813b92008104b896eed1 Cc: freebsd-wireless@freebsd.org Subject: Re: [net80211] support vendor bitmap entries; teach if_ath to export PHY error code in error frames X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussions of 802.11 stack, tools device driver development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Feb 2012 07:18:15 -0000 --f46d0444813b92008104b896eed1 Content-Type: text/plain; charset=ISO-8859-1 Hi, Please find the second pass of this attached. Fixes: * I was missing a call to ath_rx_tap_vendor() when processing normal frames * I've extended the data stored in the radiotap vendor header to include the EVM and per-chain RSSI. * I'm also storing the _raw_ combined RSSI in the radiotap header. * The rs_status and rs_phyerr_code fields are also stored. The EVM isn't strictly needed for radar work and the only RSSI required for radar is rssi_ctl[0] and rssi_ext[0] (with the combined RSSI used in some instances.) What's left: * I have a need for some continuous feedback about how busy the primary/extension channels are. I may add some method of encoding this in the radiotap header as a vendor extension; I'm not sure yet. I don't like the idea of doing this via radiotap but I need a way to encode this live as part of the stream so it can be played back with the rest of the radar error frames. I'm not sure if I really _want_ this to be part of the default FreeBSD build but honestly, having these as vendor extensions will make debugging a few things a lot easier moving forward. For example, users could begin writing live traffic sniffing applications that track per-RX-rate EVM in userland and provide graphical feedback. Bernhard: what do you think? Adrian --f46d0444813b92008104b896eed1 Content-Type: text/x-patch; charset=US-ASCII; name="net80211-ath-radiotap-phyerr-2.diff" Content-Disposition: attachment; filename="net80211-ath-radiotap-phyerr-2.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gygvycys0 SW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfbm9kZS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9u ZXQ4MDIxMS9pZWVlODAyMTFfbm9kZS5jCShyZXZpc2lvbiAyMzA4NTUpCisrKyBzeXMvbmV0ODAy MTEvaWVlZTgwMjExX25vZGUuYwkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogI2lu Y2x1ZGUgPHN5cy9tYnVmLmg+ICAgCiAjaW5jbHVkZSA8c3lzL21hbGxvYy5oPgogI2luY2x1ZGUg PHN5cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvcHJv Yy5oPgogCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogIApAQCAtNDMxLDYgKzQzMyw5IEBACiAJ bmkgPSBpZWVlODAyMTFfYWxsb2Nfbm9kZSgmaWMtPmljX3N0YSwgdmFwLCB2YXAtPml2X215YWRk cik7CiAJS0FTU0VSVChuaSAhPSBOVUxMLCAoInVuYWJsZSB0byBzZXR1cCBpbml0aWFsIEJTUyBu b2RlIikpOwogCW9ic3MgPSB2YXAtPml2X2JzczsKKwlwcmludGYoIlslbGxkXTogJXM6IGl2X2Jz cz0lcCwgbmV3IGl2X2Jzcz0lcFxuIiwKKwkgICAgKGxvbmcgbG9uZyBpbnQpIGN1cnRocmVhZC0+ dGRfdGlkLAorCSAgICBfX2Z1bmNfXyx2YXAtPml2X2JzcywgbmkpOwogCXZhcC0+aXZfYnNzID0g aWVlZTgwMjExX3JlZl9ub2RlKG5pKTsKIAlpZiAob2JzcyAhPSBOVUxMKSB7CiAJCWNvcHlfYnNz KG5pLCBvYnNzKTsKQEAgLTcwMCw2ICs3MDUsOSBAQAogCS8qCiAJICogQ29tbWl0dGVkIHRvIHNl bGJzLCBzZXR1cCBzdGF0ZS4KIAkgKi8KKwlwcmludGYoIlslbGxkXTogJXM6IHNlbGJzPSVwLCBv YnNzPSVwXG4iLAorCSAgICAobG9uZyBsb25nIGludCkgY3VydGhyZWFkLT50ZF90aWQsCisJICAg IF9fZnVuY19fLCBzZWxicywgdmFwLT5pdl9ic3MpOwogCW9ic3MgPSB2YXAtPml2X2JzczsKIAkv KgogCSAqIENoZWNrIGlmIG9sZCtuZXcgbm9kZSBoYXZlIHRoZSBzYW1lIGFkZHJlc3MgaW4gd2hp Y2gKSW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfd2RzLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lz L25ldDgwMjExL2llZWU4MDIxMV93ZHMuYwkocmV2aXNpb24gMjMwODU1KQorKysgc3lzL25ldDgw MjExL2llZWU4MDIxMV93ZHMuYwkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQAogI2lu Y2x1ZGUgPHN5cy9lcnJuby5oPgogI2luY2x1ZGUgPHN5cy9wcm9jLmg+CiAjaW5jbHVkZSA8c3lz L3N5c2N0bC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9wcm9jLmg+ CiAKICNpbmNsdWRlIDxuZXQvaWYuaD4KICNpbmNsdWRlIDxuZXQvaWZfbWVkaWEuaD4KQEAgLTE3 NSw2ICsxNzcsOSBAQAogCQkJLyoKIAkJCSAqIENvbW1pdHRlZCB0byBuZXcgbm9kZSwgc2V0dXAg c3RhdGUuCiAJCQkgKi8KKwkJCXByaW50ZigiWyVsbGRdOiAlczogaXZfYnNzPSVwLCBuZXcgaXZf YnNzPSVwXG4iLAorCQkJICAgIChsb25nIGxvbmcgaW50KSAoY3VydGhyZWFkLT50ZF90aWQpLAor CQkJICAgIF9fZnVuY19fLCB2YXAtPml2X2JzcywgbmkpOwogCQkJb2JzcyA9IHZhcC0+aXZfYnNz OwogCQkJdmFwLT5pdl9ic3MgPSBuaTsKIAkJCW5pLT5uaV93ZHN2YXAgPSB2YXA7CkBAIC0xOTcs NiArMjAyLDkgQEAKIAkJICovCiAJCW5pID0gaWVlZTgwMjExX25vZGVfY3JlYXRlX3dkcyh2YXAs IHZhcC0+aXZfZGVzX2Jzc2lkLCBjaGFuKTsKIAkJaWYgKG5pICE9IE5VTEwpIHsKKwkJCXByaW50 ZigiWyVsbGRdOiAlczogaXZfYnNzPSVwLCBuZXcgaXZfYnNzPSVwXG4iLAorCQkJICAgIChsb25n IGxvbmcgaW50KSAoY3VydGhyZWFkLT50ZF90aWQpLAorCQkJICAgIF9fZnVuY19fLCB2YXAtPml2 X2JzcywgbmkpOwogCQkJb2JzcyA9IHZhcC0+aXZfYnNzOwogCQkJdmFwLT5pdl9ic3MgPSBpZWVl ODAyMTFfcmVmX25vZGUobmkpOwogCQkJbmktPm5pX2ZsYWdzIHw9IElFRUU4MDIxMV9OT0RFX0FS RUY7CkluZGV4OiBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3Zhci5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5 cy9uZXQ4MDIxMS9pZWVlODAyMTFfdmFyLmgJKHJldmlzaW9uIDIzMDg1NSkKKysrIHN5cy9uZXQ4 MDIxMS9pZWVlODAyMTFfdmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwMCw2ICs3MDAsMTEgQEAK IAkJdWludDMyX3QgdHhfcmFkaW90YXAsCiAJICAgIHN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBf aGVhZGVyICpyaCwgaW50IHJsZW4sCiAJCXVpbnQzMl90IHJ4X3JhZGlvdGFwKTsKK3ZvaWQJaWVl ZTgwMjExX3JhZGlvdGFwX2F0dGFjaHYoc3RydWN0IGllZWU4MDIxMWNvbSAqLAorCSAgICBzdHJ1 Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciAqdGgsCisJICAgIGludCB0bGVuLCBpbnQgbl90 eF92LCB1aW50MzJfdCB0eF9yYWRpb3RhcCwKKwkgICAgc3RydWN0IGllZWU4MDIxMV9yYWRpb3Rh cF9oZWFkZXIgKnJoLAorCSAgICBpbnQgcmxlbiwgaW50IG5fcnhfdiwgdWludDMyX3QgcnhfcmFk aW90YXApOwogdm9pZAlpZWVlODAyMTFfcmFkaW90YXBfZGV0YWNoKHN0cnVjdCBpZWVlODAyMTFj b20gKik7CiB2b2lkCWllZWU4MDIxMV9yYWRpb3RhcF92YXR0YWNoKHN0cnVjdCBpZWVlODAyMTF2 YXAgKik7CiB2b2lkCWllZWU4MDIxMV9yYWRpb3RhcF92ZGV0YWNoKHN0cnVjdCBpZWVlODAyMTF2 YXAgKik7CkluZGV4OiBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3JhZGlvdGFwLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gc3lzL25ldDgwMjExL2llZWU4MDIxMV9yYWRpb3RhcC5jCShyZXZpc2lvbiAyMzA4NTUp CisrKyBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3JhZGlvdGFwLmMJKHdvcmtpbmcgY29weSkKQEAg LTQ3LDEzICs0NywyNCBAQAogCiAjaW5jbHVkZSA8bmV0ODAyMTEvaWVlZTgwMjExX3Zhci5oPgog Ci1zdGF0aWMgaW50IHJhZGlvdGFwX29mZnNldChzdHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hl YWRlciAqLCBpbnQpOworc3RhdGljIGludCByYWRpb3RhcF9vZmZzZXQoc3RydWN0IGllZWU4MDIx MV9yYWRpb3RhcF9oZWFkZXIgKiwgaW50LCBpbnQpOwogCiB2b2lkCiBpZWVlODAyMTFfcmFkaW90 YXBfYXR0YWNoKHN0cnVjdCBpZWVlODAyMTFjb20gKmljLAogCXN0cnVjdCBpZWVlODAyMTFfcmFk aW90YXBfaGVhZGVyICp0aCwgaW50IHRsZW4sIHVpbnQzMl90IHR4X3JhZGlvdGFwLAogCXN0cnVj dCBpZWVlODAyMTFfcmFkaW90YXBfaGVhZGVyICpyaCwgaW50IHJsZW4sIHVpbnQzMl90IHJ4X3Jh ZGlvdGFwKQogeworCWllZWU4MDIxMV9yYWRpb3RhcF9hdHRhY2h2KGljLCB0aCwgdGxlbiwgMCwg dHhfcmFkaW90YXAsCisJICAgIHJoLCBybGVuLCAwLCByeF9yYWRpb3RhcCk7Cit9CisKK3ZvaWQK K2llZWU4MDIxMV9yYWRpb3RhcF9hdHRhY2h2KHN0cnVjdCBpZWVlODAyMTFjb20gKmljLAorCXN0 cnVjdCBpZWVlODAyMTFfcmFkaW90YXBfaGVhZGVyICp0aCwKKwlpbnQgdGxlbiwgaW50IG5fdHhf diwgdWludDMyX3QgdHhfcmFkaW90YXAsCisJc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFk ZXIgKnJoLAorCWludCBybGVuLCBpbnQgbl9yeF92LCB1aW50MzJfdCByeF9yYWRpb3RhcCkKK3sK ICNkZWZpbmUJQihfdikJKDE8PChfdikpCiAJaW50IG9mZjsKIApAQCAtNjMsOSArNzQsOSBAQAog CS8qIGNhbGN1bGF0ZSBvZmZzZXQgdG8gY2hhbm5lbCBkYXRhICovCiAJb2ZmID0gLTE7CiAJaWYg KHR4X3JhZGlvdGFwICYgQihJRUVFODAyMTFfUkFESU9UQVBfQ0hBTk5FTCkpCi0JCW9mZiA9IHJh ZGlvdGFwX29mZnNldCh0aCwgSUVFRTgwMjExX1JBRElPVEFQX0NIQU5ORUwpOworCQlvZmYgPSBy YWRpb3RhcF9vZmZzZXQodGgsIG5fdHhfdiwgSUVFRTgwMjExX1JBRElPVEFQX0NIQU5ORUwpOwog CWVsc2UgaWYgKHR4X3JhZGlvdGFwICYgQihJRUVFODAyMTFfUkFESU9UQVBfWENIQU5ORUwpKQot CQlvZmYgPSByYWRpb3RhcF9vZmZzZXQodGgsIElFRUU4MDIxMV9SQURJT1RBUF9YQ0hBTk5FTCk7 CisJCW9mZiA9IHJhZGlvdGFwX29mZnNldCh0aCwgbl90eF92LCBJRUVFODAyMTFfUkFESU9UQVBf WENIQU5ORUwpOwogCWlmIChvZmYgPT0gLTEpIHsKIAkJaWZfcHJpbnRmKGljLT5pY19pZnAsICIl czogbm8gdHggY2hhbm5lbCwgcmFkaW90YXAgMHgleCIsCiAJCSAgICBfX2Z1bmNfXywgdHhfcmFk aW90YXApOwpAQCAtNzksOSArOTAsOSBAQAogCS8qIGNhbGN1bGF0ZSBvZmZzZXQgdG8gY2hhbm5l bCBkYXRhICovCiAJb2ZmID0gLTE7CiAJaWYgKHJ4X3JhZGlvdGFwICYgQihJRUVFODAyMTFfUkFE SU9UQVBfQ0hBTk5FTCkpCi0JCW9mZiA9IHJhZGlvdGFwX29mZnNldChyaCwgSUVFRTgwMjExX1JB RElPVEFQX0NIQU5ORUwpOworCQlvZmYgPSByYWRpb3RhcF9vZmZzZXQocmgsIG5fcnhfdiwgSUVF RTgwMjExX1JBRElPVEFQX0NIQU5ORUwpOwogCWVsc2UgaWYgKHJ4X3JhZGlvdGFwICYgQihJRUVF ODAyMTFfUkFESU9UQVBfWENIQU5ORUwpKQotCQlvZmYgPSByYWRpb3RhcF9vZmZzZXQocmgsIElF RUU4MDIxMV9SQURJT1RBUF9YQ0hBTk5FTCk7CisJCW9mZiA9IHJhZGlvdGFwX29mZnNldChyaCwg bl9yeF92LCBJRUVFODAyMTFfUkFESU9UQVBfWENIQU5ORUwpOwogCWlmIChvZmYgPT0gLTEpIHsK IAkJaWZfcHJpbnRmKGljLT5pY19pZnAsICIlczogbm8gcnggY2hhbm5lbCwgcmFkaW90YXAgMHgl eCIsCiAJCSAgICBfX2Z1bmNfXywgcnhfcmFkaW90YXApOwpAQCAtMjYwLDcgKzI3MSw4IEBACiAg KiBrbm93biAtMSBpcyByZXR1cm5lZC4KICAqLwogc3RhdGljIGludAotcmFkaW90YXBfb2Zmc2V0 KHN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBfaGVhZGVyICpyaCwgaW50IGl0ZW0pCityYWRpb3Rh cF9vZmZzZXQoc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnJoLAorICAgIGludCBu X3ZlbmRvcl9hdHRyaWJ1dGVzLCBpbnQgaXRlbSkKIHsKIAlzdGF0aWMgY29uc3Qgc3RydWN0IHsK IAkJc2l6ZV90CWFsaWduLCB3aWR0aDsKQEAgLTMzNCw2ICszNDYsOCBAQAogCWludCBvZmYsIGk7 CiAKIAlvZmYgPSBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIpOworCW9m ZiArPSBuX3ZlbmRvcl9hdHRyaWJ1dGVzICogKHNpemVvZih1aW50MzJfdCkpOworCiAJZm9yIChp ID0gMDsgaSA8IElFRUU4MDIxMV9SQURJT1RBUF9FWFQ7IGkrKykgewogCQlpZiAoKHByZXNlbnQg JiAoMTw8aSkpID09IDApCiAJCQljb250aW51ZTsKSW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAy MTFfcmFkaW90YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3JhZGlv dGFwLmgJKHJldmlzaW9uIDIzMDg1NSkKKysrIHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfcmFkaW90 YXAuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsMTIgQEAKIAogI2RlZmluZQlJRUVFODAy MTFfUkFESU9UQVBfSERSTEVOCTY0CS8qIFhYWCBkZXByZWNhdGVkICovCiAKK3N0cnVjdCBpZWVl ODAyMTFfcmFkaW90YXBfdmVuZG9yX2hlYWRlciB7CisJdWludDhfdAkJdmhfb3VpWzNdOwkvKiAz IGJ5dGUgdmVuZG9yIE9VSSAqLworCXVpbnQ4X3QJCXZoX3N1Yl9uczsJLyogU3ViIG5hbWVzcGFj ZSBvZiB0aGlzIHNlY3Rpb24gKi8KKwl1aW50MTZfdAl2aF9za2lwX2xlbjsJLyogTGVuZ3RoIG9m IHRoaXMgdmVuZG9yIHNlY3Rpb24gKi8KK30gX19wYWNrZWQ7CisKIC8qCiAgKiBUaGUgcmFkaW8g Y2FwdHVyZSBoZWFkZXIgcHJlY2VkZXMgdGhlIDgwMi4xMSBoZWFkZXIuCiAgKgpJbmRleDogc3lz L2Rldi9hdGgvYXRoX2hhbC9hcjU0MTYvYXI1NDE2X21pc2MuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv ZGV2L2F0aC9hdGhfaGFsL2FyNTQxNi9hcjU0MTZfbWlzYy5jCShyZXZpc2lvbiAyMzA4NTUpCisr KyBzeXMvZGV2L2F0aC9hdGhfaGFsL2FyNTQxNi9hcjU0MTZfbWlzYy5jCSh3b3JraW5nIGNvcHkp CkBAIC03MTQsMTMgKzcxNCwxMSBAQAogCXBlLT5wZV9yZWxwd3IgPSBNUyh2YWwsIEFSX1BIWV9S QURBUl8xX1JFTFBXUl9USFJFU0gpOwogCWlmICh0ZW1wKQogCQlwZS0+cGVfcmVscHdyIHw9IEhB TF9QSFlFUlJfUEFSQU1fRU5BQkxFOwotCXRlbXAgPSB2YWwgJiBBUl9QSFlfUkFEQVJfMV9SRUxT VEVQX0NIRUNLOwogCXBlLT5wZV9yZWxzdGVwID0gTVModmFsLCBBUl9QSFlfUkFEQVJfMV9SRUxT VEVQX1RIUkVTSCk7Ci0JaWYgKHRlbXApCi0JCXBlLT5wZV9lbmFibGVkID0gMTsKLQllbHNlCi0J CXBlLT5wZV9lbmFibGVkID0gMDsKIAorCXBlLT5wZV9lbmFibGVkID0gISEKKwkgICAgKE9TX1JF R19SRUFEKGFoLCBBUl9QSFlfUkFEQVJfMCkgJiBBUl9QSFlfUkFEQVJfMF9FTkEpOworCiAJcGUt PnBlX21heGxlbiA9IE1TKHZhbCwgQVJfUEhZX1JBREFSXzFfTUFYTEVOKTsKIAlwZS0+cGVfZXh0 Y2hhbm5lbCA9ICEhIChPU19SRUdfUkVBRChhaCwgQVJfUEhZX1JBREFSX0VYVCkgJgogCSAgICBB Ul9QSFlfUkFEQVJfRVhUX0VOQSk7CkBAIC03NjcsOSArNzY1LDE1IEBACiAKIAkvKkVuYWJsZSBG RlQgZGF0YSovCiAJdmFsIHw9IEFSX1BIWV9SQURBUl8wX0ZGVF9FTkE7CisJT1NfUkVHX1dSSVRF KGFoLCBBUl9QSFlfUkFEQVJfMCwgdmFsKTsKIAotCU9TX1JFR19XUklURShhaCwgQVJfUEhZX1JB REFSXzAsIHZhbCB8IEFSX1BIWV9SQURBUl8wX0VOQSk7CisJLyogSW1wbGljaXRseSBlbmFibGUg Ki8KKwlpZiAocGUtPnBlX2VuYWJsZWQgPT0gMSkKKwkJT1NfUkVHX1NFVF9CSVQoYWgsIEFSX1BI WV9SQURBUl8wLCBBUl9QSFlfUkFEQVJfMF9FTkEpOworCWVsc2UgaWYgKHBlLT5wZV9lbmFibGVk ID09IDApCisJCU9TX1JFR19DTFJfQklUKGFoLCBBUl9QSFlfUkFEQVJfMCwgQVJfUEhZX1JBREFS XzBfRU5BKTsKIAorCS8qIFhYWCBpcyB0aGlzIGFyb3VuZCB0aGUgY29ycmVjdCB3YXk/ISAqLwog CWlmIChwZS0+cGVfdXNlZmlyMTI4ID09IDEpCiAJCU9TX1JFR19DTFJfQklUKGFoLCBBUl9QSFlf UkFEQVJfMSwgQVJfUEhZX1JBREFSXzFfVVNFX0ZJUjEyOCk7CiAJZWxzZSBpZiAocGUtPnBlX3Vz ZWZpcjEyOCA9PSAwKQpJbmRleDogc3lzL2Rldi9hdGgvaWZfYXRoaW9jdGwuaAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBzeXMvZGV2L2F0aC9pZl9hdGhpb2N0bC5oCShyZXZpc2lvbiAyMzA4NTUpCisrKyBzeXMv ZGV2L2F0aC9pZl9hdGhpb2N0bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsMTAgKzE4OCw3MCBA QAogCSgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9EQk1fQU5UU0lHTkFMKQl8IFwKIAkoMSA8PCBJ RUVFODAyMTFfUkFESU9UQVBfREJNX0FOVE5PSVNFKQl8IFwKIAkoMSA8PCBJRUVFODAyMTFfUkFE SU9UQVBfWENIQU5ORUwpCXwgXAorCSgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9WRU5ET1JFWFQp CXwgXAorCSgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9FWFQpCQl8IFwKIAkwKQogCisvKgorICog VGhpcyBpcyBoaWdoZXIgdGhhbiB0aGUgdmVuZG9yIGJpdG1hcCB1c2VkIGluc2lkZQorICogdGhl IEF0aGVyb3MgcmVmZXJlbmNlIGNvZGViYXNlLgorICovCisKKy8qIEJpdCA4ICovCisjZGVmaW5l CUFUSF9SQURJT1RBUF9WRU5ET1JfSEVBREVSCTgKKworCisvKgorICogVXNpbmcgZm91ciBjaGFp bnMgbWFrZXMgYWxsIHRoZSBmaWVsZHMgaW4gdGhlCisgKiBwZXItY2hhaW4gaW5mbyBoZWFkZXIg YmUgNC1ieXRlIGFsaWduZWQuCisgKi8KKyNkZWZpbmUJQVRIX1JBRElPVEFQX01BWF9DSEFJTlMJ CTQKKworLyoKKyAqIFRoZSB2ZW5kb3IgcmFkaW90YXAgaGVhZGVyIGRhdGEgbmVlZHMgdG8gYmU6 CisgKgorICogKyBBbGlnbmVkIHRvIGEgNCBieXRlIGFkZHJlc3MKKyAqICsgLi4gc28gYWxsIGlu dGVybmFsIGZpZWxkcyBhcmUgNCBieXRlcyBhbGlnbmVkOworICogKyAuLiBhbmQgbm8gNjQgYml0 IGZpZWxkcyBhcmUgYWxsb3dlZC4KKyAqCisgKiBTbyBwYWRkaW5nIGlzIHJlcXVpcmVkIHRvIGVu c3VyZSB0aGlzIGlzIHRoZSBjYXNlLgorICoKKyAqIE5vdGUgdGhhdCBiZWNhdXNlIG9mIHRoZSBs YWNrIG9mIGFsaWdubWVudCB3aXRoIHRoZQorICogdmVuZG9yIGhlYWRlciAoNiBieXRlcyksIHRo ZSBmaXJzdCBmaWVsZCBtdXN0IGJlCisgKiB0d28gYnl0ZXMgc28gaXQgY2FuIGJlIGFjY2Vzc2Vk IGJ5IGFsaWdubWVudC1zdHJpY3QKKyAqIHBsYXRmb3JtIChlZyBNSVBTLikKKyAqLworc3RydWN0 IGF0aF9yYWRpb3RhcF92ZW5kb3JfaGRyIHsJCS8qIDMwIGJ5dGVzICovCisJdV9pbnQ4X3QJdmhf dmVyc2lvbjsJCS8qIDEgKi8KKwl1X2ludDhfdAl2aF9yeF9jaGFpbm1hc2s7CS8qIDEgKi8KKwor CS8qIEF0IHRoaXMgcG9pbnQgaXQgc2hvdWxkIGJlIDQgYnl0ZSBhbGlnbmVkICovCisJdV9pbnQz Ml90CWV2bVtBVEhfUkFESU9UQVBfTUFYX0NIQUlOU107CS8qIDQgKiA0ID0gMTYgKi8KKworCXVf aW50OF90CXJzc2lfY3RsW0FUSF9SQURJT1RBUF9NQVhfQ0hBSU5TXTsJLyogNCAqLworCXVfaW50 OF90CXJzc2lfZXh0W0FUSF9SQURJT1RBUF9NQVhfQ0hBSU5TXTsJLyogNCAqLworCisJdV9pbnQ4 X3QJdmhfcGh5ZXJyX2NvZGU7CS8qIFBoeSBlcnJvciBjb2RlLCBvciAweGZmICovCisJdV9pbnQ4 X3QJdmhfcnNfc3RhdHVzOwkvKiBSWCBzdGF0dXMgKi8KKwl1X2ludDhfdAl2aF9yc3NpOwkvKiBS YXcgUlNTSSAqLworCXVfaW50OF90CXZoX3BhZDFbMV07CS8qIFBhZCB0byA0IGJ5dGUgYm91bmRh cnkgKi8KK30gX19wYWNrZWQ7CisKIHN0cnVjdCBhdGhfcnhfcmFkaW90YXBfaGVhZGVyIHsKLQlz dHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciB3cl9paGRyOworCXN0cnVjdCBpZWVlODAy MTFfcmFkaW90YXBfaGVhZGVyIHdyX2loZHI7CS8qIDggKi8KKwkvKiBWZW5kb3IgZXh0ZW5zaW9u IGhlYWRlciBiaXRtYXAgKi8KKwl1X2ludDMyX3QJd3JfZXh0X2JpdG1hcDsJCS8qIDQgKi8KKwor CS8qCisJICogVGhpcyBwYWRkaW5nIGlzIG5lZWRlZCBiZWNhdXNlOgorCSAqICsgdGhlIHJhZGlv dGFwIGhlYWRlciBpcyA4IGJ5dGVzOworCSAqICsgdGhlIGV4dGVuc2lvbiBiaXRtYXAgaXMgNCBi eXRlczsKKwkgKiArIHRoZSB0c2YgaXMgOCBieXRlcywgc28gaXQgbXVzdCBzdGFydCBvbiBhbiA4 IGJ5dGUKKwkgKiAgIGJvdW5kYXJ5LgorCSAqLworCXVfaW50MzJfdAl3cl9wYWQxOworCisJLyog Tm9ybWFsIHJhZGlvdGFwIGZpZWxkcyAqLwogCXVfaW50NjRfdAl3cl90c2Y7CiAJdV9pbnQ4X3QJ d3JfZmxhZ3M7CiAJdV9pbnQ4X3QJd3JfcmF0ZTsKQEAgLTIwMyw2ICsyNjMsMjQgQEAKIAl1X2lu dDE2X3QJd3JfY2hhbl9mcmVxOwogCXVfaW50OF90CXdyX2NoYW5faWVlZTsKIAlpbnQ4X3QJCXdy X2NoYW5fbWF4cG93OworCisJLyoKKwkgKiBWZW5kb3IgaGVhZGVyIHNlY3Rpb24sIGFzIHJlcXVp cmVkIGJ5IHRoZQorCSAqIHByZXNlbmNlIG9mIHRoZSB2ZW5kb3IgZXh0ZW5zaW9uIGJpdCBhbmQg Yml0bWFwCisJICogZW50cnkuCisJICoKKwkgKiBYWFggVGhpcyBtdXN0IGJlIGFsaWduZWQgdG8g YSA0IGJ5dGUgYWRkcmVzcz8KKwkgKiBYWFggb3IgOCBieXRlIGFkZHJlc3M/CisJICovCisJc3Ry dWN0IGllZWU4MDIxMV9yYWRpb3RhcF92ZW5kb3JfaGVhZGVyCXdyX3ZoOwkvKiA2IGJ5dGVzICov CisKKwkvKgorCSAqIEJlY2F1c2Ugb2YgdGhlIGxhY2sgb2YgYWxpZ25tZW50IGVuZm9yY2VkIGJ5 IHRoZSBhYm92ZQorCSAqIGhlYWRlciwgdGhpcyB2ZW5kb3Igc2VjdGlvbiB3b24ndCBiZSBhbGln bmVkIGluIGFueQorCSAqIHVzZWZ1bCB3YXkuICBTbywgdGhpcyB3aWxsIGluY2x1ZGUgYSB0d28t Ynl0ZSB2ZXJzaW9uCisJICogdmFsdWUgd2hpY2ggd2lsbCBmb3JjZSB0aGUgc3RydWN0dXJlIHRv IGJlIDQtYnl0ZSBhbGlnbmVkLgorCSAqLworCXN0cnVjdCBhdGhfcmFkaW90YXBfdmVuZG9yX2hk cgl3cl92OwogfSBfX3BhY2tlZDsKIAogI2RlZmluZSBBVEhfVFhfUkFESU9UQVBfUFJFU0VOVCAo CQlcCkluZGV4OiBzeXMvZGV2L2F0aC9hdGhfZGZzL251bGwvZGZzX251bGwuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBzeXMvZGV2L2F0aC9hdGhfZGZzL251bGwvZGZzX251bGwuYwkocmV2aXNpb24gMjMxMDk5 KQorKysgc3lzL2Rldi9hdGgvYXRoX2Rmcy9udWxsL2Rmc19udWxsLmMJKHdvcmtpbmcgY29weSkK QEAgLTEyMCw3ICsxMjAsNyBAQAogaW50CiBhdGhfZGZzX3JhZGFyX2VuYWJsZShzdHJ1Y3QgYXRo X3NvZnRjICpzYywgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuKQogewotI2lmIDAKKyNp ZiAxCiAJSEFMX1BIWUVSUl9QQVJBTSBwZTsKIAogCS8qIENoZWNrIGlmIHRoZSBjdXJyZW50IGNo YW5uZWwgaXMgcmFkYXItZW5hYmxlZCAqLwpJbmRleDogc3lzL2Rldi9hdGgvaWZfYXRoLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gc3lzL2Rldi9hdGgvaWZfYXRoLmMJKHJldmlzaW9uIDIzMDg1NSkKKysrIHN5 cy9kZXYvYXRoL2lmX2F0aC5jCSh3b3JraW5nIGNvcHkpCkBAIC03NjYsMTAgKzc2NiwxNCBAQAog CWljLT5pY19hZGRiYV9zdG9wID0gYXRoX2FkZGJhX3N0b3A7CiAJaWMtPmljX2Jhcl9yZXNwb25z ZSA9IGF0aF9iYXJfcmVzcG9uc2U7CiAKLQlpZWVlODAyMTFfcmFkaW90YXBfYXR0YWNoKGljLAot CSAgICAmc2MtPnNjX3R4X3RoLnd0X2loZHIsIHNpemVvZihzYy0+c2NfdHhfdGgpLAorCS8qCisJ ICogVGhlcmUncyBvbmUgdmVuZG9yIGJpdG1hcCBlbnRyeSBpbiB0aGUgUlggcmFkaW90YXAKKwkg KiBoZWFkZXI7IG1ha2Ugc3VyZSB0aGF0J3MgdGFrZW4gaW50byBhY2NvdW50LgorCSAqLworCWll ZWU4MDIxMV9yYWRpb3RhcF9hdHRhY2h2KGljLAorCSAgICAmc2MtPnNjX3R4X3RoLnd0X2loZHIs IHNpemVvZihzYy0+c2NfdHhfdGgpLCAwLAogCQlBVEhfVFhfUkFESU9UQVBfUFJFU0VOVCwKLQkg ICAgJnNjLT5zY19yeF90aC53cl9paGRyLCBzaXplb2Yoc2MtPnNjX3J4X3RoKSwKKwkgICAgJnNj LT5zY19yeF90aC53cl9paGRyLCBzaXplb2Yoc2MtPnNjX3J4X3RoKSwgMSwKIAkJQVRIX1JYX1JB RElPVEFQX1BSRVNFTlQpOwogCiAJLyoKQEAgLTM4ODQsNiArMzg4OCw1MyBAQAogfQogCiBzdGF0 aWMgdm9pZAorYXRoX3J4X3RhcF92ZW5kb3Ioc3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCBtYnVm ICptLAorICAgIGNvbnN0IHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdV9pbnQ2NF90IHRzZiwg aW50MTZfdCBuZikKK3sKKwlzdHJ1Y3QgYXRoX3NvZnRjICpzYyA9IGlmcC0+aWZfc29mdGM7CisK KwkvKiBGaWxsIGluIHRoZSBleHRlbnNpb24gYml0bWFwICovCisJc2MtPnNjX3J4X3RoLndyX2V4 dF9iaXRtYXAgPSBodG9sZTMyKDEgPDwgQVRIX1JBRElPVEFQX1ZFTkRPUl9IRUFERVIpOworCisJ LyogRmlsbCBpbiB0aGUgdmVuZG9yIGhlYWRlciAqLworCXNjLT5zY19yeF90aC53cl92aC52aF9v dWlbMF0gPSAweDdmOworCXNjLT5zY19yeF90aC53cl92aC52aF9vdWlbMV0gPSAweDAzOworCXNj LT5zY19yeF90aC53cl92aC52aF9vdWlbMl0gPSAweDAwOworCisJLyogWFhYIHdoYXQgc2hvdWxk IHRoaXMgYmU/ICovCisJc2MtPnNjX3J4X3RoLndyX3ZoLnZoX3N1Yl9ucyA9IDA7CisJc2MtPnNj X3J4X3RoLndyX3ZoLnZoX3NraXBfbGVuID0KKwkgICAgaHRvbGUxNihzaXplb2Yoc3RydWN0IGF0 aF9yYWRpb3RhcF92ZW5kb3JfaGRyKSk7CisKKwkvKiBHZW5lcmFsIHZlcnNpb24gaW5mbyAqLwor CXNjLT5zY19yeF90aC53cl92LnZoX3ZlcnNpb24gPSAxOworCisJc2MtPnNjX3J4X3RoLndyX3Yu dmhfcnhfY2hhaW5tYXNrID0gc2MtPnNjX3J4Y2hhaW5tYXNrOworCisJLyogcnNzaSAqLworCXNj LT5zY19yeF90aC53cl92LnJzc2lfY3RsWzBdID0gcnMtPnJzX3Jzc2lfY3RsWzBdOworCXNjLT5z Y19yeF90aC53cl92LnJzc2lfY3RsWzFdID0gcnMtPnJzX3Jzc2lfY3RsWzFdOworCXNjLT5zY19y eF90aC53cl92LnJzc2lfY3RsWzJdID0gcnMtPnJzX3Jzc2lfY3RsWzJdOworCXNjLT5zY19yeF90 aC53cl92LnJzc2lfZXh0WzBdID0gcnMtPnJzX3Jzc2lfZXh0WzBdOworCXNjLT5zY19yeF90aC53 cl92LnJzc2lfZXh0WzFdID0gcnMtPnJzX3Jzc2lfZXh0WzFdOworCXNjLT5zY19yeF90aC53cl92 LnJzc2lfZXh0WzJdID0gcnMtPnJzX3Jzc2lfZXh0WzJdOworCisJLyogZXZtICovCisJc2MtPnNj X3J4X3RoLndyX3YuZXZtWzBdID0gcnMtPnJzX2V2bTA7CisJc2MtPnNjX3J4X3RoLndyX3YuZXZt WzFdID0gcnMtPnJzX2V2bTE7CisJc2MtPnNjX3J4X3RoLndyX3YuZXZtWzJdID0gcnMtPnJzX2V2 bTI7CisJLyogWFhYIFRPRE86IGV4dGVuZCB0aGlzIHRvIGluY2x1ZGUgMy1zdHJlYW0gRVZNICov CisKKwkvKiBwaHllcnIgaW5mbyAqLworCWlmIChycy0+cnNfc3RhdHVzICYgSEFMX1JYRVJSX1BI WSkKKwkJc2MtPnNjX3J4X3RoLndyX3YudmhfcGh5ZXJyX2NvZGUgPSBycy0+cnNfcGh5ZXJyOwor CWVsc2UKKwkJc2MtPnNjX3J4X3RoLndyX3YudmhfcGh5ZXJyX2NvZGUgPSAweGZmOworCXNjLT5z Y19yeF90aC53cl92LnZoX3JzX3N0YXR1cyA9IHJzLT5yc19zdGF0dXM7CisJc2MtPnNjX3J4X3Ro LndyX3YudmhfcnNzaSA9IHJzLT5yc19yc3NpOworfQorCitzdGF0aWMgdm9pZAogYXRoX3J4X3Rh cChzdHJ1Y3QgaWZuZXQgKmlmcCwgc3RydWN0IG1idWYgKm0sCiAJY29uc3Qgc3RydWN0IGF0aF9y eF9zdGF0dXMgKnJzLCB1X2ludDY0X3QgdHNmLCBpbnQxNl90IG5mKQogewpAQCAtMzkxNSw3ICsz OTY2LDcgQEAKIAkJCXNjLT5zY19yeF90aC53cl9mbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBf Rl9TSE9SVEdJOwogCX0KICNlbmRpZgotCXNjLT5zY19yeF90aC53cl90c2YgPSBodG9sZTY0KGF0 aF9leHRlbmRfdHNmKHNjLCBycy0+cnNfdHN0YW1wLCB0c2YpKTsKKwlzYy0+c2NfcnhfdGgud3Jf dHNmID0gdHNmOwogCWlmIChycy0+cnNfc3RhdHVzICYgSEFMX1JYRVJSX0NSQykKIAkJc2MtPnNj X3J4X3RoLndyX2ZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9GX0JBREZDUzsKIAkvKiBYWFgg cHJvcGFnYXRlIG90aGVyIGVycm9yIGZsYWdzIGZyb20gZGVzY3JpcHRvciAqLwpAQCAtNDE1Niw2 ICs0MjA3LDcgQEAKIAkJCQltLT5tX3BrdGhkci5sZW4gPSBtLT5tX2xlbiA9IGxlbjsKIAkJCQli Zi0+YmZfbSA9IE5VTEw7CiAJCQkJYXRoX3J4X3RhcChpZnAsIG0sIHJzLCByc3RhbXAsIG5mKTsK KwkJCQlhdGhfcnhfdGFwX3ZlbmRvcihpZnAsIG0sIHJzLCByc3RhbXAsIG5mKTsKIAkJCQlpZWVl ODAyMTFfcmFkaW90YXBfcnhfYWxsKGljLCBtKTsKIAkJCQltX2ZyZWVtKG0pOwogCQkJfQpAQCAt NDI1MSw4ICs0MzAzLDEwIEBACiAJCSAqIG1hdGVyaWFsIHJlcXVpcmVkIGJ5IGllZWU4MDIxMV9p bnB1dC4gIE5vdGUgdGhhdAogCQkgKiBub2lzZSBzZXR0aW5nIGlzIGZpbGxlZCBpbiBhYm92ZS4K IAkJICovCi0JCWlmIChpZWVlODAyMTFfcmFkaW90YXBfYWN0aXZlKGljKSkKKwkJaWYgKGllZWU4 MDIxMV9yYWRpb3RhcF9hY3RpdmUoaWMpKSB7CiAJCQlhdGhfcnhfdGFwKGlmcCwgbSwgcnMsIHJz dGFtcCwgbmYpOworCQkJYXRoX3J4X3RhcF92ZW5kb3IoaWZwLCBtLCBycywgcnN0YW1wLCBuZik7 CisJCX0KIAogCQkvKgogCQkgKiBGcm9tIHRoaXMgcG9pbnQgb24gd2UgYXNzdW1lIHRoZSBmcmFt ZSBpcyBhdCBsZWFzdAo= --f46d0444813b92008104b896eed1--