From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Drake Subject: Re: [PATCH][RFC] softmac: suggest TX rate Date: Mon, 17 Apr 2006 18:43:55 +0100 Message-ID: <4443D3DB.2040002@gentoo.org> References: <4442E13E.80507@gentoo.org> <1145265385.6560.48.camel@localhost> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060504060600060008080309" Cc: netdev@vger.kernel.org, softmac-dev@sipsolutions.net, Ulrich Kunitz Return-path: Received: from mta07-winn.ispmail.ntl.com ([81.103.221.47]:45451 "EHLO mtaout01-winn.ispmail.ntl.com") by vger.kernel.org with ESMTP id S1751183AbWDQRab (ORCPT ); Mon, 17 Apr 2006 13:30:31 -0400 To: Johannes Berg In-Reply-To: <1145265385.6560.48.camel@localhost> Sender: netdev-owner@vger.kernel.org List-Id: netdev.vger.kernel.org This is a multi-part message in MIME format. --------------060504060600060008080309 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Johannes Berg wrote: > Couldn't we just initialise the softmac txrates substructure to > something useful when associating, and have drivers look into that > instead? How about this? It also addresses the fact that multicast data must be transmitted at a basic rate. --------------060504060600060008080309 Content-Type: text/plain; name="patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch" LS0tIGxpbnV4L2luY2x1ZGUvbmV0L2llZWU4MDIxMXNvZnRtYWMuaC5vcmlnCTIwMDYtMDQt MTYgMjM6Mzc6MzIuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC9pbmNsdWRlL25ldC9pZWVl ODAyMTFzb2Z0bWFjLmgJMjAwNi0wNC0xNyAxODo0MDowNC4wMDAwMDAwMDAgKzAxMDAKQEAg LTg2LDYgKzg2LDkgQEAgc3RydWN0IGllZWU4MDIxMXNvZnRtYWNfYXNzb2NfaW5mbyB7CiAJ CiAJLyogQlNTSUQgd2UncmUgdHJ5aW5nIHRvIGFzc29jaWF0ZSB0byAqLwogCWNoYXIgYnNz aWRbRVRIX0FMRU5dOworCisJLyogUmF0ZXMgc3VwcG9ydGVkIGJ5IHRoZSBuZXR3b3JrICov CisJc3RydWN0IGllZWU4MDIxMXNvZnRtYWNfcmF0ZXNpbmZvIHN1cHBvcnRlZF9yYXRlczsK IAkKIAkvKiBzb21lIGZsYWdzLgogCSAqIHN0YXRpY19lc3NpZCBpcyB2YWxpZCBpZiB0aGUg ZXNzaWQgaXMgY29uc3RhbnQsCkBAIC0xMzMsMTIgKzEzNiwyMyBAQCBzdHJ1Y3QgaWVlZTgw MjExc29mdG1hY190eHJhdGVzIHsKIAkgKiAoSWYgdGhlIGRldmljZSBzdXBwb3J0cyBmYWxs YmFjayBhbmQgaGFyZHdhcmUtcmV0cnkpCiAJICovCiAJdTggbWNhc3RfZmFsbGJhY2s7CisK KwkvKiBUaGUgQml0LVJhdGUgdG8gYmUgdXNlZCBmb3IgbXVsdGljYXN0IG1hbmFnZW1lbnQg ZnJhbWVzLiAqLworCXU4IG1ndF9tY2FzdF9yYXRlOworCS8qIFRoZSBCaXQtUmF0ZSB0byBi ZSB1c2VkIGZvciBtdWx0aWNhc3QgbWFuYWdlbWVudCBmYWxsYmFjaworCSAqIChJZiB0aGUg ZGV2aWNlIHN1cHBvcnRzIGZhbGxiYWNrIGFuZCBoYXJkd2FyZS1yZXRyeSkKKwkgKi8KKwl1 OCBtZ3RfbWNhc3RfZmFsbGJhY2s7CisKIAkvKiBUaGUgQml0LVJhdGUgdG8gYmUgdXNlZCBm b3IgYW55IG90aGVyIChub3JtYWwpIGRhdGEgcGFja2V0LiAqLwogCXU4IGRlZmF1bHRfcmF0 ZTsKIAkvKiBUaGUgQml0LVJhdGUgdG8gYmUgdXNlZCBmb3IgZGVmYXVsdCBmYWxsYmFjawog CSAqIChJZiB0aGUgZGV2aWNlIHN1cHBvcnRzIGZhbGxiYWNrIGFuZCBoYXJkd2FyZS1yZXRy eSkKIAkgKi8KIAl1OCBkZWZhdWx0X2ZhbGxiYWNrOworCisJLyogVGhpcyBpcyB0aGUgcmF0 ZSB0aGF0IHRoZSB1c2VyIGFza2VkIGZvciAqLworCXU4IHVzZXJfcmF0ZTsKIH07CiAKIC8q IEJpdHMgZm9yIHR4cmF0ZXNfY2hhbmdlIGNhbGxiYWNrLiAqLwpAQCAtMTQ2LDYgKzE2MCw4 IEBAIHN0cnVjdCBpZWVlODAyMTFzb2Z0bWFjX3R4cmF0ZXMgewogI2RlZmluZSBJRUVFODAy MTFTT0ZUTUFDX1RYUkFURUNIR19ERUZBVUxUX0ZCQUNLCSgxIDw8IDEpIC8qIGRlZmF1bHRf ZmFsbGJhY2sgKi8KICNkZWZpbmUgSUVFRTgwMjExU09GVE1BQ19UWFJBVEVDSEdfTUNBU1QJ CSgxIDw8IDIpIC8qIG1jYXN0X3JhdGUgKi8KICNkZWZpbmUgSUVFRTgwMjExU09GVE1BQ19U WFJBVEVDSEdfTUNBU1RfRkJBQ0sJCSgxIDw8IDMpIC8qIG1jYXN0X2ZhbGxiYWNrICovCisj ZGVmaW5lIElFRUU4MDIxMVNPRlRNQUNfVFhSQVRFQ0hHX01HVF9NQ0FTVAkJKDEgPDwgNCkg LyogbWd0X21jYXN0X3JhdGUgKi8KKyNkZWZpbmUgSUVFRTgwMjExU09GVE1BQ19UWFJBVEVD SEdfTUdUX01DQVNUX0ZCQUNLCSgxIDw8IDUpIC8qIG1ndF9tY2FzdF9mYWxsYmFjayAqLwog CiBzdHJ1Y3QgaWVlZTgwMjExc29mdG1hY19kZXZpY2UgewogCS8qIDgwMi4xMSBzdHJ1Y3R1 cmUgZm9yIGRhdGEgc3R1ZmYgKi8KQEAgLTI0Niw2ICsyNjIsMjggQEAgZXh0ZXJuIHZvaWQg aWVlZTgwMjExc29mdG1hY19mcmFnbWVudF9sbwogICogTm90ZSB0aGF0IHRoZSByYXRlcyBu ZWVkIHRvIGJlIHNvcnRlZC4gKi8KIGV4dGVybiB2b2lkIGllZWU4MDIxMXNvZnRtYWNfc2V0 X3JhdGVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IGNvdW50LCB1OCAqcmF0ZXMpOwog CisvKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggYWR2aXNlcyB5b3UgdGhlIHJhdGUgYXQgd2hp Y2ggYSBmcmFtZSBzaG91bGQgYmUKKyAqIHRyYW5zbWl0dGVkIGF0LiAqLworc3RhdGljIGlu bGluZSB1OCBpZWVlODAyMTFzb2Z0bWFjX3N1Z2dlc3RfdHhyYXRlKHN0cnVjdCBpZWVlODAy MTFzb2Z0bWFjX2RldmljZSAqbWFjLAorCQkJCQkJIGludCBpc19tdWx0aWNhc3QsCisJCQkJ CQkgaW50IGlzX21ndCkKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExc29mdG1hY190eHJhdGVzICp0 eHJhdGVzID0gJm1hYy0+dHhyYXRlczsKKworCWlmICghbWFjLT5hc3NvY2lhdGVkKQorCQly ZXR1cm4gdHhyYXRlcy0+bWd0X21jYXN0X3JhdGU7CisKKwkvKiBXZSBhcmUgYXNzb2NpYXRl ZCwgc2VuZGluZyB1bmljYXN0IGZyYW1lICovCisJaWYgKCFpc19tdWx0aWNhc3QpCisJCXJl dHVybiB0eHJhdGVzLT5kZWZhdWx0X3JhdGU7CisKKwkvKiBXZSBhcmUgYXNzb2NpYXRlZCwg c2VuZGluZyBtdWx0aWNhc3QgZnJhbWUgKi8KKwlpZiAoaXNfbWd0KQorCQlyZXR1cm4gdHhy YXRlcy0+bWd0X21jYXN0X3JhdGU7CisJZWxzZQorCQlyZXR1cm4gdHhyYXRlcy0+bWNhc3Rf cmF0ZTsKK30KKwogLyogU3RhcnQgdGhlIFNvZnRNQUMuIENhbGwgdGhpcyBhZnRlciB5b3Ug aW5pdGlhbGl6ZWQgdGhlIGRldmljZQogICogYW5kIGl0IGlzIHJlYWR5IHRvIHJ1bi4KICAq LwotLS0gbGludXgvbmV0L2llZWU4MDIxMS9zb2Z0bWFjL2llZWU4MDIxMXNvZnRtYWNfbW9k dWxlLmMub3JpZwkyMDA2LTA0LTE3IDAxOjA0OjQyLjAwMDAwMDAwMCArMDEwMAorKysgbGlu dXgvbmV0L2llZWU4MDIxMS9zb2Z0bWFjL2llZWU4MDIxMXNvZnRtYWNfbW9kdWxlLmMJMjAw Ni0wNC0xNyAxODozMDowNC4wMDAwMDAwMDAgKzAxMDAKQEAgLTI2LDYgKzI2LDcgQEAKIAog I2luY2x1ZGUgImllZWU4MDIxMXNvZnRtYWNfcHJpdi5oIgogI2luY2x1ZGUgPGxpbnV4L3Nv cnQuaD4KKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPgogCiBzdHJ1Y3QgbmV0X2Rl dmljZSAqYWxsb2NfaWVlZTgwMjExc29mdG1hYyhpbnQgc2l6ZW9mX3ByaXYpCiB7CkBAIC0x NjYsMTUgKzE2Nyw4NSBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFzb2Z0bWFjX3N0YXJ0X2No ZWNrCiAJfQogfQogCi12b2lkIGllZWU4MDIxMXNvZnRtYWNfc3RhcnQoc3RydWN0IG5ldF9k ZXZpY2UgKmRldikKK2ludCBpZWVlODAyMTFzb2Z0bWFjX3JhdGVzaW5mb19yYXRlX3N1cHBv cnRlZChzdHJ1Y3QgaWVlZTgwMjExc29mdG1hY19yYXRlc2luZm8gKnJpLCB1OCByYXRlKQor eworCWludCBzZWFyY2g7CisJdTggc2VhcmNoX3JhdGU7CisKKwlmb3IgKHNlYXJjaCA9IDA7 IHNlYXJjaCA8IHJpLT5jb3VudDsgc2VhcmNoKyspIHsKKwkJc2VhcmNoX3JhdGUgPSByaS0+ cmF0ZXNbc2VhcmNoXTsKKwkJc2VhcmNoX3JhdGUgJj0gfklFRUU4MDIxMV9CQVNJQ19SQVRF X01BU0s7CisJCWlmIChyYXRlID09IHNlYXJjaF9yYXRlKQorCQkJcmV0dXJuIDE7CisJfQor CisJcmV0dXJuIDA7Cit9CisKKy8qIEZpbmRzIHRoZSBoaWdoZXN0IHJhdGUgd2hpY2ggaXM6 CisgKiAgMS4gUHJlc2VudCBpbiByaSAob3B0aW9uYWxseSBhIGJhc2ljIHJhdGUpCisgKiAg Mi4gU3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UKKyAqICAzLiBMZXNzIHRoYW4gb3IgZXF1YWwg dG8gdGhlIHVzZXItZGVmaW5lZCByYXRlCisgKi8KK3N0YXRpYyB1OCBoaWdoZXN0X3N1cHBv cnRlZF9yYXRlKHN0cnVjdCBpZWVlODAyMTFzb2Z0bWFjX2RldmljZSAqbWFjLAorCXN0cnVj dCBpZWVlODAyMTFzb2Z0bWFjX3JhdGVzaW5mbyAqcmksIGludCBiYXNpY19vbmx5KQorewor CXU4IHVzZXJfcmF0ZSA9IG1hYy0+dHhyYXRlcy51c2VyX3JhdGU7CisJaW50IGk7CisJCisJ aWYgKHJpLT5jb3VudCA9PSAwKSB7CisJCWRwcmludGsoS0VSTl9FUlJPUiBQRlggImVtcHR5 IHJhdGVzaW5mbz9cbiIpOworCQlyZXR1cm4gSUVFRTgwMjExX0NDS19SQVRFXzFNQjsKKwl9 CisKKwlmb3IgKGkgPSByaS0+Y291bnQgLSAxOyBpID49IDA7IGktLSkgeworCQl1OCByYXRl ID0gcmktPnJhdGVzW2ldOworCQlpZiAoYmFzaWNfb25seSAmJiAhKHJhdGUgJiBJRUVFODAy MTFfQkFTSUNfUkFURV9NQVNLKSkKKwkJCWNvbnRpbnVlOworCQlyYXRlICY9IH5JRUVFODAy MTFfQkFTSUNfUkFURV9NQVNLOworCQlpZiAocmF0ZSA+IHVzZXJfcmF0ZSkKKwkJCWNvbnRp bnVlOworCQlpZiAoaWVlZTgwMjExc29mdG1hY19yYXRlc2luZm9fcmF0ZV9zdXBwb3J0ZWQo Jm1hYy0+cmF0ZXNpbmZvLCByYXRlKSkKKwkJCXJldHVybiByYXRlOworCX0KKworCS8qIElm IHdlIGhhdmVuJ3QgZm91bmQgYSBzdWl0YWJsZSByYXRlIGJ5IG5vdywganVzdCB0cnVzdCB0 aGUgdXNlciAqLworCXJldHVybiB1c2VyX3JhdGU7Cit9CisKK3ZvaWQgaWVlZTgwMjExc29m dG1hY19yZWNhbGNfdHhyYXRlcyhzdHJ1Y3QgaWVlZTgwMjExc29mdG1hY19kZXZpY2UgKm1h YykKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExc29mdG1hY190eHJhdGVzICp0eHJhdGVzID0gJm1h Yy0+dHhyYXRlczsKKwlzdHJ1Y3QgaWVlZTgwMjExc29mdG1hY190eHJhdGVzIG9sZHJhdGVz OworCXUzMiBjaGFuZ2UgPSAwOworCisJaWYgKG1hYy0+dHhyYXRlc19jaGFuZ2UpCisJCW9s ZHJhdGVzID0gbWFjLT50eHJhdGVzOworCisJY2hhbmdlIHw9IElFRUU4MDIxMVNPRlRNQUNf VFhSQVRFQ0hHX0RFRkFVTFQ7CisJdHhyYXRlcy0+ZGVmYXVsdF9yYXRlID0gaGlnaGVzdF9z dXBwb3J0ZWRfcmF0ZShtYWMsICZtYWMtPmFzc29jaW5mby5zdXBwb3J0ZWRfcmF0ZXMsIDAp OworCisJY2hhbmdlIHw9IElFRUU4MDIxMVNPRlRNQUNfVFhSQVRFQ0hHX0RFRkFVTFRfRkJB Q0s7CisJdHhyYXRlcy0+ZGVmYXVsdF9mYWxsYmFjayA9IGxvd2VyX3JhdGUobWFjLCB0eHJh dGVzLT5kZWZhdWx0X3JhdGUpOworCisJY2hhbmdlIHw9IElFRUU4MDIxMVNPRlRNQUNfVFhS QVRFQ0hHX01DQVNUOworCXR4cmF0ZXMtPm1jYXN0X3JhdGUgPSBoaWdoZXN0X3N1cHBvcnRl ZF9yYXRlKG1hYywgJm1hYy0+YXNzb2NpbmZvLnN1cHBvcnRlZF9yYXRlcywgMSk7CisKKwlj aGFuZ2UgfD0gSUVFRTgwMjExU09GVE1BQ19UWFJBVEVDSEdfTUdUX01DQVNUX0ZCQUNLOwor CXR4cmF0ZXMtPm1jYXN0X2ZhbGxiYWNrID0gbG93ZXJfcmF0ZShtYWMsIHR4cmF0ZXMtPm1j YXN0X3JhdGUpOworCisJaWYgKG1hYy0+dHhyYXRlc19jaGFuZ2UpCisJCW1hYy0+dHhyYXRl c19jaGFuZ2UobWFjLT5kZXYsIGNoYW5nZSwgJm9sZHJhdGVzKTsKKworfQorCit2b2lkIGll ZWU4MDIxMXNvZnRtYWNfaW5pdF90eHJhdGVzKHN0cnVjdCBpZWVlODAyMTFzb2Z0bWFjX2Rl dmljZSAqbWFjKQogewotCXN0cnVjdCBpZWVlODAyMTFzb2Z0bWFjX2RldmljZSAqbWFjID0g aWVlZTgwMjExX3ByaXYoZGV2KTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2RldmljZSAqaWVlZSA9 IG1hYy0+aWVlZTsKIAl1MzIgY2hhbmdlID0gMDsKKwlzdHJ1Y3QgaWVlZTgwMjExc29mdG1h Y190eHJhdGVzICp0eHJhdGVzID0gJm1hYy0+dHhyYXRlczsKIAlzdHJ1Y3QgaWVlZTgwMjEx c29mdG1hY190eHJhdGVzIG9sZHJhdGVzOwogCi0JaWVlZTgwMjExc29mdG1hY19zdGFydF9j aGVja19yYXRlcyhtYWMpOwotCiAJLyogVE9ETzogV2UgbmVlZCBzb21lIGtpbmQgb2Ygc3Rh dGUgbWFjaGluZSB0byBsb3dlciB0aGUgZGVmYXVsdCByYXRlcwogCSAqICAgICAgIGlmIHdl IGxvb3NlIHRvbyBtYW55IHBhY2tldHMuCiAJICovCkBAIC0xODksMTkgKzI2MCw0MCBAQCB2 b2lkIGllZWU4MDIxMXNvZnRtYWNfc3RhcnQoc3RydWN0IG5ldF9kCiAJICAgbW9yZSByZWxp YWJsZS4gTm90ZSBzaW1pbGFyIGxvZ2ljIGluCiAJICAgaWVlZTgwMjExc29mdG1hY193eF9z ZXRfcmF0ZSgpICovCSAKIAlpZiAoaWVlZS0+bW9kdWxhdGlvbiAmIElFRUU4MDIxMV9DQ0tf TU9EVUxBVElPTikgewotCQltYWMtPnR4cmF0ZXMuZGVmYXVsdF9yYXRlID0gSUVFRTgwMjEx X0NDS19SQVRFXzExTUI7Ci0JCWNoYW5nZSB8PSBJRUVFODAyMTFTT0ZUTUFDX1RYUkFURUNI R19ERUZBVUxUOwotCQltYWMtPnR4cmF0ZXMuZGVmYXVsdF9mYWxsYmFjayA9IElFRUU4MDIx MV9DQ0tfUkFURV81TUI7Ci0JCWNoYW5nZSB8PSBJRUVFODAyMTFTT0ZUTUFDX1RYUkFURUNI R19ERUZBVUxUX0ZCQUNLOworCQl0eHJhdGVzLT51c2VyX3JhdGUgPSBJRUVFODAyMTFfQ0NL X1JBVEVfMTFNQjsKIAl9IGVsc2UgaWYgKGllZWUtPm1vZHVsYXRpb24gJiBJRUVFODAyMTFf T0ZETV9NT0RVTEFUSU9OKSB7Ci0JCW1hYy0+dHhyYXRlcy5kZWZhdWx0X3JhdGUgPSBJRUVF ODAyMTFfT0ZETV9SQVRFXzU0TUI7Ci0JCWNoYW5nZSB8PSBJRUVFODAyMTFTT0ZUTUFDX1RY UkFURUNIR19ERUZBVUxUOwotCQltYWMtPnR4cmF0ZXMuZGVmYXVsdF9mYWxsYmFjayA9IElF RUU4MDIxMV9PRkRNX1JBVEVfMjRNQjsKLQkJY2hhbmdlIHw9IElFRUU4MDIxMVNPRlRNQUNf VFhSQVRFQ0hHX0RFRkFVTFRfRkJBQ0s7CisJCXR4cmF0ZXMtPnVzZXJfcmF0ZSA9IElFRUU4 MDIxMV9PRkRNX1JBVEVfNTRNQjsKIAl9IGVsc2UKIAkJYXNzZXJ0KDApOworCisJdHhyYXRl cy0+ZGVmYXVsdF9yYXRlID0gSUVFRTgwMjExX0NDS19SQVRFXzFNQjsKKwljaGFuZ2UgfD0g SUVFRTgwMjExU09GVE1BQ19UWFJBVEVDSEdfREVGQVVMVDsKKworCXR4cmF0ZXMtPmRlZmF1 bHRfZmFsbGJhY2sgPSBJRUVFODAyMTFfQ0NLX1JBVEVfMU1COworCWNoYW5nZSB8PSBJRUVF ODAyMTFTT0ZUTUFDX1RYUkFURUNIR19ERUZBVUxUX0ZCQUNLOworCisJdHhyYXRlcy0+bWNh c3RfcmF0ZSA9IElFRUU4MDIxMV9DQ0tfUkFURV8xTUI7CisJY2hhbmdlIHw9IElFRUU4MDIx MVNPRlRNQUNfVFhSQVRFQ0hHX01DQVNUOworCisJdHhyYXRlcy0+bWNhc3RfZmFsbGJhY2sg PSBJRUVFODAyMTFfQ0NLX1JBVEVfMU1COworCWNoYW5nZSB8PSBJRUVFODAyMTFTT0ZUTUFD X1RYUkFURUNIR19NQ0FTVF9GQkFDSzsKKworCXR4cmF0ZXMtPm1ndF9tY2FzdF9yYXRlID0g SUVFRTgwMjExX0NDS19SQVRFXzFNQjsKKwljaGFuZ2UgfD0gSUVFRTgwMjExU09GVE1BQ19U WFJBVEVDSEdfTUdUX01DQVNUOworCisJdHhyYXRlcy0+bWd0X21jYXN0X2ZhbGxiYWNrID0g SUVFRTgwMjExX0NDS19SQVRFXzFNQjsKKwljaGFuZ2UgfD0gSUVFRTgwMjExU09GVE1BQ19U WFJBVEVDSEdfTUdUX01DQVNUX0ZCQUNLOworCiAJaWYgKG1hYy0+dHhyYXRlc19jaGFuZ2Up Ci0JCW1hYy0+dHhyYXRlc19jaGFuZ2UoZGV2LCBjaGFuZ2UsICZvbGRyYXRlcyk7CisJCW1h Yy0+dHhyYXRlc19jaGFuZ2UobWFjLT5kZXYsIGNoYW5nZSwgJm9sZHJhdGVzKTsKK30KKwor dm9pZCBpZWVlODAyMTFzb2Z0bWFjX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCit7 CisJc3RydWN0IGllZWU4MDIxMXNvZnRtYWNfZGV2aWNlICptYWMgPSBpZWVlODAyMTFfcHJp dihkZXYpOworCisJaWVlZTgwMjExc29mdG1hY19zdGFydF9jaGVja19yYXRlcyhtYWMpOwor CWllZWU4MDIxMXNvZnRtYWNfaW5pdF90eHJhdGVzKG1hYyk7CiB9CiBFWFBPUlRfU1lNQk9M X0dQTChpZWVlODAyMTFzb2Z0bWFjX3N0YXJ0KTsKIAotLS0gbGludXgvbmV0L2llZWU4MDIx MS9zb2Z0bWFjL2llZWU4MDIxMXNvZnRtYWNfYXNzb2MuYy5vcmlnCTIwMDYtMDQtMTYgMjM6 NTU6MjMuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC9uZXQvaWVlZTgwMjExL3NvZnRtYWMv aWVlZTgwMjExc29mdG1hY19hc3NvYy5jCTIwMDYtMDQtMTcgMTc6MTc6NTkuMDAwMDAwMDAw ICswMTAwCkBAIC0xMDEsMzAgKzEwMSwyMiBAQCBpZWVlODAyMTFzb2Z0bWFjX2Rpc2Fzc29j KHN0cnVjdCBpZWVlODAyCiAJLyogRG8gTk9UIGNsZWFyIGJzc3ZhbGlkIGFzIHRoYXQgd2ls bCBicmVhayBpZWVlODAyMTFzb2Z0bWFjX2Fzc29jX3dvcmshICovCiAJbWFjLT5hc3NvY2lh dGVkID0gMDsKIAltYWMtPmFzc29jaW5mby5hc3NvY2lhdGluZyA9IDA7CisJaWVlZTgwMjEx c29mdG1hY19pbml0X3R4cmF0ZXMobWFjKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZt YWMtPmxvY2ssIGZsYWdzKTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQKIHdlX3N1cHBvcnRf YWxsX2Jhc2ljX3JhdGVzKHN0cnVjdCBpZWVlODAyMTFzb2Z0bWFjX2RldmljZSAqbWFjLCB1 OCAqZnJvbSwgdTggZnJvbV9sZW4pCiB7Ci0JaW50IGlkeCwgc2VhcmNoLCBmb3VuZDsKLQl1 OCByYXRlLCBzZWFyY2hfcmF0ZTsKKwlpbnQgaWR4OworCXU4IHJhdGU7CiAKIAlmb3IgKGlk eCA9IDA7IGlkeCA8IChmcm9tX2xlbik7IGlkeCsrKSB7CiAJCXJhdGUgPSAoZnJvbSlbaWR4 XTsKIAkJaWYgKCEocmF0ZSAmIElFRUU4MDIxMV9CQVNJQ19SQVRFX01BU0spKQogCQkJY29u dGludWU7Ci0JCWZvdW5kID0gMDsKIAkJcmF0ZSAmPSB+SUVFRTgwMjExX0JBU0lDX1JBVEVf TUFTSzsKLQkJZm9yIChzZWFyY2ggPSAwOyBzZWFyY2ggPCBtYWMtPnJhdGVzaW5mby5jb3Vu dDsgc2VhcmNoKyspIHsKLQkJCXNlYXJjaF9yYXRlID0gbWFjLT5yYXRlc2luZm8ucmF0ZXNb c2VhcmNoXTsKLQkJCXNlYXJjaF9yYXRlICY9IH5JRUVFODAyMTFfQkFTSUNfUkFURV9NQVNL OwotCQkJaWYgKHJhdGUgPT0gc2VhcmNoX3JhdGUpIHsKLQkJCQlmb3VuZCA9IDE7Ci0JCQkJ YnJlYWs7Ci0JCQl9Ci0JCX0KLQkJaWYgKCFmb3VuZCkKKwkJaWYgKCFpZWVlODAyMTFzb2Z0 bWFjX3JhdGVzaW5mb19yYXRlX3N1cHBvcnRlZCgmbWFjLT5yYXRlc2luZm8sIHJhdGUpKQog CQkJcmV0dXJuIDA7CiAJfQogCXJldHVybiAxOwpAQCAtMjgzLDYgKzI3NSw5IEBAIGllZWU4 MDIxMXNvZnRtYWNfYXNzb2NpYXRlZChzdHJ1Y3QgaWVlZTgKIAlzdHJ1Y3QgaWVlZTgwMjEx c29mdG1hY19uZXR3b3JrICpuZXQpCiB7CiAJbWFjLT5hc3NvY2luZm8uYXNzb2NpYXRpbmcg PSAwOworCW1hYy0+YXNzb2NpbmZvLnN1cHBvcnRlZF9yYXRlcyA9IG5ldC0+c3VwcG9ydGVk X3JhdGVzOworCWllZWU4MDIxMXNvZnRtYWNfcmVjYWxjX3R4cmF0ZXMobWFjKTsKKwogCW1h Yy0+YXNzb2NpYXRlZCA9IDE7CiAJaWYgKG1hYy0+c2V0X2Jzc2lkX2ZpbHRlcikKIAkJbWFj LT5zZXRfYnNzaWRfZmlsdGVyKG1hYy0+ZGV2LCBuZXQtPmJzc2lkKTsKQEAgLTM3Myw2ICsz NjgsNyBAQCBpZWVlODAyMTFzb2Z0bWFjX2hhbmRsZV9kaXNhc3NvYyhzdHJ1Y3QgCiAJc3Bp bl9sb2NrX2lycXNhdmUoJm1hYy0+bG9jaywgZmxhZ3MpOwogCW1hYy0+YXNzb2NpbmZvLmJz c3ZhbGlkID0gMDsKIAltYWMtPmFzc29jaWF0ZWQgPSAwOworCWllZWU4MDIxMXNvZnRtYWNf aW5pdF90eHJhdGVzKG1hYyk7CiAJc2NoZWR1bGVfd29yaygmbWFjLT5hc3NvY2luZm8ud29y ayk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbWFjLT5sb2NrLCBmbGFncyk7CiAJCi0t LSBsaW51eC9uZXQvaWVlZTgwMjExL3NvZnRtYWMvaWVlZTgwMjExc29mdG1hY193eC5jLm9y aWcJMjAwNi0wNC0xNyAxNjo0NTo1MS4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4L25ldC9p ZWVlODAyMTEvc29mdG1hYy9pZWVlODAyMTFzb2Z0bWFjX3d4LmMJMjAwNi0wNC0xNyAxNzoy Nzo0Ny4wMDAwMDAwMDAgKzAxMDAKQEAgLTIwMSw4ICsyMDEsOCBAQCBpZWVlODAyMTFzb2Z0 bWFjX3d4X3NldF9yYXRlKHN0cnVjdCBuZXRfCiAJaWYgKGlzX29mZG0gJiYgIShpZWVlLT5t b2R1bGF0aW9uICYgSUVFRTgwMjExX09GRE1fTU9EVUxBVElPTikpCiAJCWdvdG8gb3V0X3Vu bG9jazsKIAotCW1hYy0+dHhyYXRlcy5kZWZhdWx0X3JhdGUgPSByYXRlOwotCW1hYy0+dHhy YXRlcy5kZWZhdWx0X2ZhbGxiYWNrID0gbG93ZXJfcmF0ZShtYWMsIHJhdGUpOworCW1hYy0+ dHhyYXRlcy51c2VyX3JhdGUgPSByYXRlOworCWllZWU4MDIxMXNvZnRtYWNfcmVjYWxjX3R4 cmF0ZXMobWFjKTsKIAllcnIgPSAwOwogCiBvdXRfdW5sb2NrOgkKQEAgLTIyMyw3ICsyMjMs NyBAQCBpZWVlODAyMTFzb2Z0bWFjX3d4X2dldF9yYXRlKHN0cnVjdCBuZXRfCiAJaW50IGVy ciA9IC1FSU5WQUw7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmbWFjLT5sb2NrLCBmbGFncyk7 Ci0Jc3dpdGNoIChtYWMtPnR4cmF0ZXMuZGVmYXVsdF9yYXRlKSB7CisJc3dpdGNoIChtYWMt PnR4cmF0ZXMudXNlcl9yYXRlKSB7CiAJY2FzZSBJRUVFODAyMTFfQ0NLX1JBVEVfMU1COgog CQlkYXRhLT5iaXRyYXRlLnZhbHVlID0gMTAwMDAwMDsKIAkJYnJlYWs7Ci0tLSBsaW51eC9u ZXQvaWVlZTgwMjExL3NvZnRtYWMvaWVlZTgwMjExc29mdG1hY19wcml2Lmgub3JpZwkyMDA2 LTA0LTE3IDE2OjQ2OjA5LjAwMDAwMDAwMCArMDEwMAorKysgbGludXgvbmV0L2llZWU4MDIx MS9zb2Z0bWFjL2llZWU4MDIxMXNvZnRtYWNfcHJpdi5oCTIwMDYtMDQtMTcgMTc6MDk6MDgu MDAwMDAwMDAwICswMTAwCkBAIC0xMTYsNyArMTE2LDEwIEBAIGllZWU4MDIxMXNvZnRtYWNf Z2V0X25ldHdvcmtfYnlfZXNzaWQoc3QKIAlzdHJ1Y3QgaWVlZTgwMjExc29mdG1hY19lc3Np ZCAqZXNzaWQpOwogCiAvKiBSYXRlcyByZWxhdGVkICovCitpbnQgaWVlZTgwMjExc29mdG1h Y19yYXRlc2luZm9fcmF0ZV9zdXBwb3J0ZWQoc3RydWN0IGllZWU4MDIxMXNvZnRtYWNfcmF0 ZXNpbmZvICpyaSwgdTggcmF0ZSk7CiB1OCBpZWVlODAyMTFzb2Z0bWFjX2xvd2VyX3JhdGVf ZGVsdGEoc3RydWN0IGllZWU4MDIxMXNvZnRtYWNfZGV2aWNlICptYWMsIHU4IHJhdGUsIGlu dCBkZWx0YSk7Cit2b2lkIGllZWU4MDIxMXNvZnRtYWNfaW5pdF90eHJhdGVzKHN0cnVjdCBp ZWVlODAyMTFzb2Z0bWFjX2RldmljZSAqbWFjKTsKK3ZvaWQgaWVlZTgwMjExc29mdG1hY19y ZWNhbGNfdHhyYXRlcyhzdHJ1Y3QgaWVlZTgwMjExc29mdG1hY19kZXZpY2UgKm1hYyk7CiBz dGF0aWMgaW5saW5lIHU4IGxvd2VyX3JhdGUoc3RydWN0IGllZWU4MDIxMXNvZnRtYWNfZGV2 aWNlICptYWMsIHU4IHJhdGUpIHsKIAlyZXR1cm4gaWVlZTgwMjExc29mdG1hY19sb3dlcl9y YXRlX2RlbHRhKG1hYywgcmF0ZSwgMSk7CiB9Cg== --------------060504060600060008080309--