Re: DTIM (Power Save Mode) w/ HostAP
"Kevin Lahey" <[email protected]> Wed, 19 Mar 2003 16:23:22 -0800
| Newsgroups | gmane.network.wireless.bsd.general |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --Multipart_Wed__19_Mar_2003_16:19:29_-0800_08161400 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Fri, 14 Mar 2003 15:26:19 -0800 Matt Peterson <[email protected]> wrote: > I've emailed the usual BSD driver developers, many of which have crammed > schedules. Anyone else available to fix this up in FreeBSD? Well, I've attached a patch that make power saving work for the NetBSD-current. My understanding is that the FreeBSD-current wireless drivers are substantially similar, so we could probably get something working pretty easily. I offer this patch without a whole lot of testing; it appears to work with Lucent and PRISM2 cards on NetBSD systems. I had a discussion with Matt off-line in which he suggested that several folks were anxious to play with the patch, so I went ahead and posted it. If people try it out, I'd love to hear about any issues that come up. There are still some issues to resolve: * AID allocation is pretty clunky. I iterate through all of the attached STAs to verify that a new AID is unique. This is grossly inefficient and could really break down under a high load. This should really be rewritten to use a bitmap. * There is no limit on the number of packets that will be saved for a STA in power save mode. We should certainly have some limit to prevent some sort of DoS attack. the 802.11 spec requires us to store packets for at least the listen interval specified when the STA associates. I don't think that we keep track of the listen interval right now. We should probably reject association attempts with ridiculous listen intervals. * AID allocation is flat out broken -- I noticed while preparing this message that after 2007 AIDs are handed out, I fail to reset the AID counter. I figured it was better to get the patch out and fix that later. Kevin [email protected] --Multipart_Wed__19_Mar_2003_16:19:29_-0800_08161400 Content-Type: application/octet-stream; name="ps-hostap-diffs" Content-Disposition: attachment; filename="ps-hostap-diffs" Content-Transfer-Encoding: base64 SW5kZXg6IG5ldC9pZl9pZWVlODAyMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9z cmMvc3lzL25ldC9pZl9pZWVlODAyMTEuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNgpkaWZm IC1jIC1yMS4yNiBpZl9pZWVlODAyMTEuaAoqKiogbmV0L2lmX2llZWU4MDIxMS5oCTIwMDMvMDIv MjUgMDE6NTc6MzUJMS4yNgotLS0gbmV0L2lmX2llZWU4MDIxMS5oCTIwMDMvMDMvMTkgMjE6MjA6 MzUKKioqKioqKioqKioqKioqCioqKiA0MTcsNDIyICoqKioKLS0tIDQxNyw0MjcgLS0tLQogIAl1 X2ludDE2X3QJCW5pX2ZoZHdlbGw7CS8qIEZIIG9ubHkgKi8KICAJdV9pbnQ4X3QJCW5pX2ZoaW5k ZXg7CS8qIEZIIG9ubHkgKi8KICAKKyAJLyogcG93ZXIgc2F2aW5nIG1vZGUgKi8KKyAKKyAJdV9p bnQ4X3QJCW5pX3B3cnNhdmU7CisgCXN0cnVjdCBpZnF1ZXVlCQluaV9zYXZlZHE7CS8qIHBhY2tl dHMgd2FpdGluZyBmb3IgcHNwb2xsICovCisgCiAgCS8qIG90aGVycyAqLwogIAl1X2ludDE2X3QJ CW5pX2Fzc29jaWQ7CS8qIGFzc29jIHJlc3BvbnNlICovCiAgCXVfaW50MTZfdAkJbmlfdHhzZXE7 CS8qIHNlcSB0byBiZSB0cmFuc21pdHRlZCAqLwoqKioqKioqKioqKioqKioKKioqIDQzMyw0Mzgg KioqKgotLS0gNDM4LDQ0NSAtLS0tCiAgI2RlZmluZQlJRUVFODAyMTFfRkhfQ0hBTlNFVChjaGFu KQkoKGNoYW4pL0lFRUU4MDIxMV9GSF9DSEFOTU9EKzEpCiAgI2RlZmluZQlJRUVFODAyMTFfRkhf Q0hBTlBBVChjaGFuKQkoKGNoYW4pJUlFRUU4MDIxMV9GSF9DSEFOTU9EKQogIAorICNkZWZpbmUg SUVFRTgwMjExX1BXUl9TTEVFUAkweDEJLyogU1RBIGlzIGluIHBvd2VyIHNhdmluZyBtb2RlICov CisgCiAgc3RydWN0IGllZWU4MDIxMV93ZXBrZXkgewogIAlpbnQJCQl3a19sZW47CiAgCXVfaW50 OF90CQl3a19rZXlbSUVFRTgwMjExX0tFWUJVRl9TSVpFXTsKKioqKioqKioqKioqKioqCioqKiA0 NDYsNDU2ICoqKioKLS0tIDQ1Myw0NjUgLS0tLQogIAkJCQkgICAgc3RydWN0IGllZWU4MDIxMV9u b2RlICosIGludCwgaW50KTsKICAJaW50CQkJKCppY19uZXdzdGF0ZSkodm9pZCAqLCBlbnVtIGll ZWU4MDIxMV9zdGF0ZSk7CiAgCWludAkJCSgqaWNfY2hhbmNoZWNrKSh2b2lkICosIHVfY2hhciAq KTsKKyAJaW50CQkJKCppY19zZXRfdGltKShzdHJ1Y3QgaWVlZTgwMjExY29tICosIGludCwgaW50 KTsKICAJdV9pbnQ4X3QJCWljX215YWRkcltJRUVFODAyMTFfQUREUl9MRU5dOwogIAl1X2ludDhf dAkJaWNfc3VwX3JhdGVzW0lFRUU4MDIxMV9SQVRFX1NJWkVdOwogIAl1X2NoYXIJCQlpY19jaGFu X2F2YWlsW3JvdW5kdXAoSUVFRTgwMjExX0NIQU5fTUFYLE5CQlkpXTsKICAJdV9jaGFyCQkJaWNf Y2hhbl9hY3RpdmVbcm91bmR1cChJRUVFODAyMTFfQ0hBTl9NQVgsIE5CQlkpXTsKICAJc3RydWN0 IGlmcXVldWUJCWljX21ndHE7CisgCXN0cnVjdCBpZnF1ZXVlCQlpY19wd3JzYXZlcTsKICAJaW50 CQkJaWNfZmxhZ3M7CiAgCWVudW0gaWVlZTgwMjExX3BoeXR5cGUJaWNfcGh5dHlwZTsKICAJZW51 bSBpZWVlODAyMTFfb3Btb2RlCWljX29wbW9kZTsKKioqKioqKioqKioqKioqCioqKiA1MzgsNTQz ICoqKioKLS0tIDU0Nyw1NTUgLS0tLQogIAogIGludAlpZWVlODAyMTFfY2ZnZ2V0KHN0cnVjdCBp Zm5ldCAqLCB1X2xvbmcsIGNhZGRyX3QpOwogIGludAlpZWVlODAyMTFfY2Znc2V0KHN0cnVjdCBp Zm5ldCAqLCB1X2xvbmcsIGNhZGRyX3QpOworIAorIHZvaWQJaWVlZTgwMjExX3B3cnNhdmUoc3Ry dWN0IGllZWU4MDIxMWNvbSAqLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKiwgCisgCQkJICBzdHJ1 Y3QgbWJ1ZiAqKTsKICAKICAjZW5kaWYgLyogX0tFUk5FTCAqLwogIApJbmRleDogbmV0L2lmX2ll ZWU4MDIxMXN1YnIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL25ldC9p Zl9pZWVlODAyMTFzdWJyLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQKZGlmZiAtYyAtcjEu MjQgaWZfaWVlZTgwMjExc3Vici5jCioqKiBuZXQvaWZfaWVlZTgwMjExc3Vici5jCTIwMDMvMDIv MjUgMDE6NTc6MzYJMS4yNAotLS0gbmV0L2lmX2llZWU4MDIxMXN1YnIuYwkyMDAzLzAzLzE5IDIx OjIwOjQwCioqKioqKioqKioqKioqKgoqKiogMTE4LDEyNSAqKioqCi0tLSAxMTgsMTI5IC0tLS0K ICBzdGF0aWMgdm9pZCBpZWVlODAyMTFfcmVjdl9kZWF1dGgoc3RydWN0IGllZWU4MDIxMWNvbSAq LAogICAgICBzdHJ1Y3QgbWJ1ZiAqLCBpbnQsIHVfaW50MzJfdCk7CiAgCisgc3RhdGljIHZvaWQg aWVlZTgwMjExX3JlY3ZfcHNwb2xsKHN0cnVjdCBpZWVlODAyMTFjb20gKiwKKyAgICAgc3RydWN0 IG1idWYgKiwgaW50LCB1X2ludDMyX3QpOworIAogIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9jcmNf aW5pdCh2b2lkKTsKICBzdGF0aWMgdV9pbnQzMl90IGllZWU4MDIxMV9jcmNfdXBkYXRlKHVfaW50 MzJfdCwgdV9pbnQ4X3QgKiwgaW50KTsKKyBzdGF0aWMgaW50IGllZWU4MDIxMV9haWRfdW5pcXVl KHN0cnVjdCBpZWVlODAyMTFjb20gKiwgdV9pbnQxNl90KTsKICAKICBzdGF0aWMgY29uc3QgY2hh ciAqaWVlZTgwMjExX21ndF9zdWJ0eXBlX25hbWVbXSA9IHsKICAJImFzc29jX3JlcSIsCSJhc3Nv Y19yZXNwIiwJInJlYXNzb2NfcmVxIiwJInJlYXNzb2NfcmVzcCIsCioqKioqKioqKioqKioqKgoq KiogMjE1LDIyMCAqKioqCi0tLSAyMTksMjI1IC0tLS0KICAKICAJcyA9IHNwbG5ldCgpOwogIAlJ Rl9QVVJHRSgmaWMtPmljX21ndHEpOworIAlJRl9QVVJHRSgmaWMtPmljX3B3cnNhdmVxKTsKICAJ aWYgKGljLT5pY193ZXBfY3R4ICE9IE5VTEwpIHsKICAJCWZyZWUoaWMtPmljX3dlcF9jdHgsIE1f REVWQlVGKTsKICAJCWljLT5pY193ZXBfY3R4ID0gTlVMTDsKKioqKioqKioqKioqKioqCioqKiAy NzUsMjgxICoqKioKICAJCQllbHNlCiAgCQkJCWJzc2lkID0gd2gtPmlfYWRkcjE7CiAgCQkJaWYg KCFJRUVFODAyMTFfQUREUl9FUShic3NpZCwgaWMtPmljX2Jzcy5uaV9ic3NpZCkgJiYKISAJCQkg ICAgIUlFRUU4MDIxMV9BRERSX0VRKGJzc2lkLCBpZnAtPmlmX2Jyb2FkY2FzdGFkZHIpKSB7CiAg CQkJCS8qIG5vdCBpbnRlcmVzdGVkIGluICovCiAgCQkJCURQUklOVEYyKCgiaWVlZTgwMjExX2lu cHV0OiBvdGhlciBic3MgJXNcbiIsCiAgCQkJCSAgICBldGhlcl9zcHJpbnRmKHdoLT5pX2FkZHIz KSkpOwotLS0gMjgwLDI4OCAtLS0tCiAgCQkJZWxzZQogIAkJCQlic3NpZCA9IHdoLT5pX2FkZHIx OwogIAkJCWlmICghSUVFRTgwMjExX0FERFJfRVEoYnNzaWQsIGljLT5pY19ic3MubmlfYnNzaWQp ICYmCiEgCQkJICAgICFJRUVFODAyMTFfQUREUl9FUShic3NpZCwgaWZwLT5pZl9icm9hZGNhc3Rh ZGRyKSAmJgohIAkJCSAgICAod2gtPmlfZmNbMF0gJiBJRUVFODAyMTFfRkMwX1RZUEVfTUFTSykg IT0KISAJCQkgICAgSUVFRTgwMjExX0ZDMF9UWVBFX0NUTCkgewogIAkJCQkvKiBub3QgaW50ZXJl c3RlZCBpbiAqLwogIAkJCQlEUFJJTlRGMigoImllZWU4MDIxMV9pbnB1dDogb3RoZXIgYnNzICVz XG4iLAogIAkJCQkgICAgZXRoZXJfc3ByaW50Zih3aC0+aV9hZGRyMykpKTsKKioqKioqKioqKioq KioqCioqKiAzMDUsMzEwICoqKioKLS0tIDMxMiwzNDcgLS0tLQogIAkJbmktPm5pX2luYWN0ID0g MDsKICAJfQogIAorIAlpZiAoKHdoLT5pX2ZjWzFdICYgSUVFRTgwMjExX0ZDMV9QV1JfTUdUKSAm JiBuaS0+bmlfcHdyc2F2ZSA9PSAwKSB7CisgCQkvKiB0dXJuIG9uIHBvd2VyIHNhdmUgbW9kZSAq LworIAorIAkJaWYgKGlmcC0+aWZfZmxhZ3MgJiBJRkZfREVCVUcpCisgCQkJcHJpbnRmKCIlczog cG93ZXIgc2F2ZSBtb2RlIG9uIGZvciAlc1xuIiwKKyAJCQkgICAgaWZwLT5pZl94bmFtZSwgZXRo ZXJfc3ByaW50Zih3aC0+aV9hZGRyMikpOworIAorIAkJbmktPm5pX3B3cnNhdmUgPSBJRUVFODAy MTFfUFdSX1NMRUVQOworIAl9CisgCWlmICgod2gtPmlfZmNbMV0gJiBJRUVFODAyMTFfRkMxX1BX Ul9NR1QpID09IDAgICYmIAorIAkgICAgbmktPm5pX3B3cnNhdmUgIT0gMCkgeworIAkJLyogdHVy biBvZmYgcG93ZXIgc2F2ZSBtb2RlLCBkZXF1ZXVlIHN0b3JlZCBwYWNrZXRzICovCisgCisgCQlz dHJ1Y3QgbWJ1ZiAqbTsKKyAKKyAJCW5pLT5uaV9wd3JzYXZlID0gMDsKKyAJCWlmIChpYy0+aWNf c2V0X3RpbSkgCisgCQkJaWMtPmljX3NldF90aW0oaWMsIG5pLT5uaV9hc3NvY2lkLCAwKTsKKyAK KyAJCWlmIChpZnAtPmlmX2ZsYWdzICYgSUZGX0RFQlVHKQorIAkJCXByaW50ZigiJXM6IHBvd2Vy IHNhdmUgbW9kZSBvZmYgZm9yICVzXG4iLAorIAkJCSAgICBpZnAtPmlmX3huYW1lLCBldGhlcl9z cHJpbnRmKHdoLT5pX2FkZHIxKSk7CisgCisgCQl3aGlsZSAoIUlGX0lTX0VNUFRZKCZuaS0+bmlf c2F2ZWRxKSkgeworIAkJCUlGX0RFUVVFVUUoJm5pLT5uaV9zYXZlZHEsIG0pOworIAkJCUlGX0VO UVVFVUUoJmljLT5pY19wd3JzYXZlcSwgbSk7CisgCQkJKCppZnAtPmlmX3N0YXJ0KShpZnApOwor IAkJfQorIAl9CisgCiAgCXN3aXRjaCAod2gtPmlfZmNbMF0gJiBJRUVFODAyMTFfRkMwX1RZUEVf TUFTSykgewogIAljYXNlIElFRUU4MDIxMV9GQzBfVFlQRV9EQVRBOgogIAkJc3dpdGNoIChpYy0+ aWNfb3Btb2RlKSB7CioqKioqKioqKioqKioqKgoqKiogNDgyLDQ4NyAqKioqCi0tLSA1MTksNTM3 IC0tLS0KICAJCXJldHVybjsKICAKICAJY2FzZSBJRUVFODAyMTFfRkMwX1RZUEVfQ1RMOgorIAkJ aWYgKGljLT5pY19vcG1vZGUgIT0gSUVFRTgwMjExX01fSE9TVEFQKQorIAkJCWdvdG8gb3V0Owor IAkJc3VidHlwZSA9IHdoLT5pX2ZjWzBdICYgSUVFRTgwMjExX0ZDMF9TVUJUWVBFX01BU0s7Cisg CQlpZiAoc3VidHlwZSA9PSBJRUVFODAyMTFfRkMwX1NVQlRZUEVfUFNfUE9MTCkgeworIAkJCS8q IER1bXAgb3V0IGEgc2luZ2xlIHBhY2tldCBmcm9tIHRoZSBob3N0ICovCisgCQkJaWYgKGlmcC0+ aWZfZmxhZ3MgJiBJRkZfREVCVUcpCisgCQkJCXByaW50ZigiJXM6IGdvdCBwb3dlciBzYXZlIHBy b2JlIGZyb20gJXNcbiIsCisgCQkJCSAgICAgICBpZnAtPmlmX3huYW1lLCAKKyAJCQkJICAgICAg IGV0aGVyX3NwcmludGYod2gtPmlfYWRkcjIpKTsKKyAJCQlpZWVlODAyMTFfcmVjdl9wc3BvbGwo aWMsIG0sIHJzc2ksIHJzdGFtcCk7CisgCQl9CisgCQlnb3RvIG91dDsKKyAKICAJZGVmYXVsdDoK ICAJCURQUklOVEYoKCJpZWVlODAyMTFfaW5wdXQ6IGJhZCB0eXBlICV4XG4iLCB3aC0+aV9mY1sw XSkpOwogIAkJLyogc2hvdWxkIG5vdCBjb21lIGhlcmUgKi8KKioqKioqKioqKioqKioqCioqKiAx MzA1LDEzMTAgKioqKgotLS0gMTM1NSwxMzY1IC0tLS0KICAJCSgqaWMtPmljX25vZGVfZnJlZSko aWMsIG5pKTsKICAJVEFJTFFfUkVNT1ZFKCZpYy0+aWNfbm9kZSwgbmksIG5pX2xpc3QpOwogIAlM SVNUX1JFTU9WRShuaSwgbmlfaGFzaCk7CisgCWlmICghSUZfSVNfRU1QVFkoJm5pLT5uaV9zYXZl ZHEpKSB7CisgCQlJRl9QVVJHRSgmbmktPm5pX3NhdmVkcSk7CisgCQlpZiAoaWMtPmljX3NldF90 aW0pCisgCQkJaWMtPmljX3NldF90aW0oaWMsIG5pLT5uaV9hc3NvY2lkLCAwKTsKKyAJfQogIAlz cGx4KHMpOwogIAlmcmVlKG5pLCBNX0RFVkJVRik7CiAgCWlmIChUQUlMUV9FTVBUWSgmaWMtPmlj X25vZGUpKQoqKioqKioqKioqKioqKioKKioqIDEzNzksMTM4NSAqKioqCi0tLSAxNDM0LDE0NjQg LS0tLQogIAlyZXR1cm4gb2tyYXRlICYgSUVFRTgwMjExX1JBVEVfVkFMOwogIH0KICAKKyB2b2lk CisgaWVlZTgwMjExX3B3cnNhdmUoc3RydWN0IGllZWU4MDIxMWNvbSAqaWMsIHN0cnVjdCBpZWVl ODAyMTFfbm9kZSAqbmksIAorIAkJICBzdHJ1Y3QgbWJ1ZiAqbSkKKyB7CisgCS8qIFN0b3JlIHRo ZSBuZXcgcGFja2V0IG9uIG91ciBxdWV1ZSwgY2hhbmdpbmcgdGhlIFRJTSBpZiBuZWNlc3Nhcnkg Ki8KKyAKKyAJaWYgKElGX0lTX0VNUFRZKCZuaS0+bmlfc2F2ZWRxKSkgeworIAkJaWMtPmljX3Nl dF90aW0oaWMsIG5pLT5uaV9hc3NvY2lkLCAxKTsKKyAJfQorIAlJRl9FTlFVRVVFKCZuaS0+bmlf c2F2ZWRxLCBtKTsKKyB9CisgCiAgc3RhdGljIGludAorIGllZWU4MDIxMV9haWRfdW5pcXVlKHN0 cnVjdCBpZWVlODAyMTFjb20gKmljLCB1X2ludDE2X3QgYXNzb2NpZCkKKyB7CisgCXN0cnVjdCBp ZWVlODAyMTFfbm9kZSAqbmk7CisgCisgCVRBSUxRX0ZPUkVBQ0gobmksICZpYy0+aWNfbm9kZSwg bmlfbGlzdCkgeworIAkJaWYgKG5pLT5uaV9hc3NvY2lkID09IGFzc29jaWQpCisgCQkJcmV0dXJu IDA7CisgCX0KKyAJcmV0dXJuIDE7CisgfQorIAorIHN0YXRpYyBpbnQKICBpZWVlODAyMTFfc2Vu ZF9wcnJlcShzdHJ1Y3QgaWVlZTgwMjExY29tICppYywgc3RydWN0IGllZWU4MDIxMV9ub2RlICpu aSwKICAgICAgaW50IHR5cGUsIGludCBkdW1teSkKICB7CioqKioqKioqKioqKioqKgoqKiogMjA1 OCwyMDY1ICoqKioKICAJbmktPm5pX2ZoZHdlbGwgPSBpYy0+aWNfYnNzLm5pX2ZoZHdlbGw7CiAg CW5pLT5uaV9maGluZGV4ID0gaWMtPmljX2Jzcy5uaV9maGluZGV4OwogIAlpZiAobmktPm5pX2Fz c29jaWQgPT0gMCkgewohIAkJbmktPm5pX2Fzc29jaWQgPSAweGMwMDAgfCBpYy0+aWNfYnNzLm5p X2Fzc29jaWQrKzsKISAJCW5ld2Fzc29jID0gMTsKICAJfSBlbHNlCiAgCQluZXdhc3NvYyA9IDA7 CiAgCUlFRUU4MDIxMV9TRU5EX01HTVQoaWMsIG5pLCByZXNwLCBJRUVFODAyMTFfU1RBVFVTX1NV Q0NFU1MpOwotLS0gMjEzNywyMTU5IC0tLS0KICAJbmktPm5pX2ZoZHdlbGwgPSBpYy0+aWNfYnNz Lm5pX2ZoZHdlbGw7CiAgCW5pLT5uaV9maGluZGV4ID0gaWMtPmljX2Jzcy5uaV9maGluZGV4Owog IAlpZiAobmktPm5pX2Fzc29jaWQgPT0gMCkgewohIAkJdV9pbnQxNl90IGZpcnN0ID0gaWMtPmlj X2Jzcy5uaV9hc3NvY2lkOwohIAkJdV9pbnQxNl90IGFpZCA9IDB4YzAwMCB8IGljLT5pY19ic3Mu bmlfYXNzb2NpZCsrOwohIAohIAkJLyogWFhYOiAgdGhpcyBpcyByaWRpY3Vsb3VzbHkgc2xvdyB1 bmRlciBoZWF2eSBsb2FkISAqLwohIAkJd2hpbGUgKChpZWVlODAyMTFfYWlkX3VuaXF1ZShpYywg YWlkKSA9PSAwICYmCiEgCQkgICAgICAgIGljLT5pY19ic3MubmlfYXNzb2NpZCAhPSBmaXJzdCkg fHwgCiEgCQkJaWMtPmljX2Jzcy5uaV9hc3NvY2lkID09IDApCiEgCQkJYWlkID0gMHhjMDAwIHwg aWMtPmljX2Jzcy5uaV9hc3NvY2lkKys7CiEgCiEgCQlpZiAoaWMtPmljX2Jzcy5uaV9hc3NvY2lk ID09IGZpcnN0KSB7CiEgCQkJSUVFRTgwMjExX1NFTkRfTUdNVChpYywgbmksIHJlc3AsCiEgCQkJ CQkgICAgSUVFRTgwMjExX1JFQVNPTl9BU1NPQ19UT09NQU5ZKTsKISAJCQlyZXR1cm47CiEgCQl9 IGVsc2UgewohIAkJCW5pLT5uaV9hc3NvY2lkID0gYWlkOwohIAkJCW5ld2Fzc29jID0gMTsKISAJ CX0KICAJfSBlbHNlCiAgCQluZXdhc3NvYyA9IDA7CiAgCUlFRUU4MDIxMV9TRU5EX01HTVQoaWMs IG5pLCByZXNwLCBJRUVFODAyMTFfU1RBVFVTX1NVQ0NFU1MpOwoqKioqKioqKioqKioqKioKKioq IDIyMTEsMjIxNiAqKioqCi0tLSAyMzA1LDIzNzggLS0tLQogIAl9CiAgfQogIAorIAorIHN0YXRp YyB2b2lkCisgaWVlZTgwMjExX3JlY3ZfcHNwb2xsKHN0cnVjdCBpZWVlODAyMTFjb20gKmljLCBz dHJ1Y3QgbWJ1ZiAqbTAsIGludCByc3NpLAorIAkJICAgICAgdV9pbnQzMl90IHJzdGFtcCkKKyB7 CisgCXN0cnVjdCBpZm5ldCAqaWZwID0gJmljLT5pY19pZjsKKyAJc3RydWN0IGllZWU4MDIxMV9m cmFtZSAqd2g7CisgCXN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmk7CisgCXN0cnVjdCBtYnVmICpt OworIAl1X2ludDE2X3QgYWlkOworIAorIAl3aCA9IG10b2QobTAsIHN0cnVjdCBpZWVlODAyMTFf ZnJhbWUgKik7CisgCisgCWlmICgobmkgPSBpZWVlODAyMTFfZmluZF9ub2RlKGljLCB3aC0+aV9h ZGRyMikpID09IE5VTEwpIHsKKyAJCWlmIChpZnAtPmlmX2ZsYWdzICYgSUZGX0RFQlVHKQorIAkJ CXByaW50ZigiJXM6IHN0YXRpb24gJXMgc2VudCBib2d1cyBwb3dlciBzYXZlIHBvbGxcbiIsCisg CQkJICAgICAgIGlmcC0+aWZfeG5hbWUsIGV0aGVyX3NwcmludGYod2gtPmlfYWRkcjIpKTsKKyAJ CXJldHVybjsKKyAJfQorIAorIAltZW1jcHkoJmFpZCwgd2gtPmlfZHVyLCBzaXplb2Yod2gtPmlf ZHVyKSk7CisgCWlmICgoYWlkICYgMHhjMDAwKSAhPSAweGMwMDApIHsKKyAJCWlmIChpZnAtPmlm X2ZsYWdzICYgSUZGX0RFQlVHKQorIAkJCXByaW50ZigiJXM6IHN0YXRpb24gJXMgc2VudCBib2d1 cyBhaWQgJXhcbiIsCisgCQkJICAgICAgIGlmcC0+aWZfeG5hbWUsIGV0aGVyX3NwcmludGYod2gt PmlfYWRkcjIpLCBhaWQpOworIAkJcmV0dXJuOworIAl9CisgCisgCWlmIChhaWQgIT0gbmktPm5p X2Fzc29jaWQpIHsKKyAJCWlmIChpZnAtPmlmX2ZsYWdzICYgSUZGX0RFQlVHKQorIAkJCXByaW50 ZigiJXM6IHN0YXRpb24gJXMgYWlkICV4IGRvZXNuJ3QgbWF0Y2ggcHNwb2xsIGFpZCAleFxuIiwK KyAJCQkgICAgICAgaWZwLT5pZl94bmFtZSwgZXRoZXJfc3ByaW50Zih3aC0+aV9hZGRyMiksCisg CQkJICAgICAgIG5pLT5uaV9hc3NvY2lkLCBhaWQpOworIAkJcmV0dXJuOworIAl9CisgCisgCS8q IE9rYXksIHRha2UgdGhlIGZpcnN0IHF1ZXVlZCBwYWNrZXQgYW5kIHB1dCBpdCBvdXQuLi4gKi8K KyAKKyAJSUZfREVRVUVVRSgmbmktPm5pX3NhdmVkcSwgbSk7CisgCWlmIChtID09IE5VTEwpIHsK KyAJCWlmIChpZnAtPmlmX2ZsYWdzICYgSUZGX0RFQlVHKQorIAkJCXByaW50ZigiJXM6IHN0YXRp b24gJXMgc2VudCBwc3BvbGwsIGJ1dCBubyBwYWNrZXRzIGFyZSBzYXZlZFxuIiwKKyAJCQkgICAg ICAgaWZwLT5pZl94bmFtZSwgZXRoZXJfc3ByaW50Zih3aC0+aV9hZGRyMikpOworIAkJcmV0dXJu OworIAl9CisgCXdoID0gbXRvZChtLCBzdHJ1Y3QgaWVlZTgwMjExX2ZyYW1lICopOworIAorIAkv KiAKKyAJICogSWYgdGhpcyBpcyB0aGUgbGFzdCBwYWNrZXQsIHR1cm4gb2ZmIHRoZSBUSU0gZmll bGRzLgorIAkgKiBJZiB0aGVyZSBhcmUgbW9yZSBwYWNrZXRzLCBzZXQgdGhlIG1vcmUgcGFja2V0 cyBiaXQuCisgCSAqLworIAorIAlpZiAoSUZfSVNfRU1QVFkoJm5pLT5uaV9zYXZlZHEpKSB7Cisg CQlpZiAoaWMtPmljX3NldF90aW0pIAorIAkJCWljLT5pY19zZXRfdGltKGljLCBuaS0+bmlfYXNz b2NpZCwgMCk7CisgCX0gZWxzZSB7CisgCQl3aC0+aV9mY1sxXSB8PSBJRUVFODAyMTFfRkMxX01P UkVfREFUQTsKKyAJfQorIAorIAlpZiAoaWZwLT5pZl9mbGFncyAmIElGRl9ERUJVRykKKyAJCXBy aW50ZigiJXM6IGVucXVldWVkIHBvd2VyIHNhdmluZyBwYWNrZXQgZm9yIHN0YXRpb24gJXNcbiIs CisgCQkgICAgICAgaWZwLT5pZl94bmFtZSwgZXRoZXJfc3ByaW50ZihuaS0+bmlfbWFjYWRkcikp OworIAorIAlJRl9FTlFVRVVFKCZpYy0+aWNfcHdyc2F2ZXEsIG0pOworIAkoKmlmcC0+aWZfc3Rh cnQpKGlmcCk7CisgfQorIAorIAogIGludAogIGllZWU4MDIxMV9uZXdfc3RhdGUoc3RydWN0IGlm bmV0ICppZnAsIGVudW0gaWVlZTgwMjExX3N0YXRlIG5zdGF0ZSwgaW50IG1ndCkKICB7CioqKioq KioqKioqKioqKgoqKiogMjI4MywyMjg4ICoqKioKLS0tIDI0NDUsMjQ1MSAtLS0tCiAgCQkJaWMt PmljX3NjYW5fdGltZXIgPSAwOwogIAkJCWljLT5pY19tZ3RfdGltZXIgPSAwOwogIAkJCUlGX1BV UkdFKCZpYy0+aWNfbWd0cSk7CisgCQkJSUZfUFVSR0UoJmljLT5pY19wd3JzYXZlcSk7CiAgCQkJ aWYgKGljLT5pY193ZXBfY3R4ICE9IE5VTEwpIHsKICAJCQkJZnJlZShpYy0+aWNfd2VwX2N0eCwg TV9ERVZCVUYpOwogIAkJCQlpYy0+aWNfd2VwX2N0eCA9IE5VTEw7CkluZGV4OiBkZXYvaWMvd2ku Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2Rldi9pYy93aS5jLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjExMgpkaWZmIC1jIC1yMS4xMTIgd2kuYwoqKiogZGV2L2ljL3dp LmMJMjAwMy8wMi8yNSAwMTo1NzozNQkxLjExMgotLS0gZGV2L2ljL3dpLmMJMjAwMy8wMy8xOSAy MToyMDo0NgoqKioqKioqKioqKioqKioKKioqIDg5LDk0ICoqKioKLS0tIDg5LDk1IC0tLS0KICAK ICAjaW5jbHVkZSA8bmV0L2lmLmg+CiAgI2luY2x1ZGUgPG5ldC9pZl9kbC5oPgorICNpbmNsdWRl IDxuZXQvaWZfbGxjLmg+CiAgI2luY2x1ZGUgPG5ldC9pZl9tZWRpYS5oPgogICNpbmNsdWRlIDxu ZXQvaWZfZXRoZXIuaD4KICAjaW5jbHVkZSA8bmV0L2lmX2llZWU4MDIxMS5oPgoqKioqKioqKioq KioqKioKKioqIDEzNSwxNDAgKioqKgotLS0gMTM2LDE0MiAtLS0tCiAgc3RhdGljIGludCAgd2lf d3JpdGVfcmlkKHN0cnVjdCB3aV9zb2Z0YyAqLCBpbnQsIHZvaWQgKiwgaW50KTsKICAKICBzdGF0 aWMgaW50ICB3aV9uZXdzdGF0ZSh2b2lkICosIGVudW0gaWVlZTgwMjExX3N0YXRlKTsKKyBzdGF0 aWMgaW50ICB3aV9zZXRfdGltKHN0cnVjdCBpZWVlODAyMTFjb20gKiwgaW50LCBpbnQpOwogIAog IHN0YXRpYyBpbnQgIHdpX3NjYW5fYXAoc3RydWN0IHdpX3NvZnRjICopOwogIHN0YXRpYyB2b2lk IHdpX3NjYW5fcmVzdWx0KHN0cnVjdCB3aV9zb2Z0YyAqLCBpbnQsIGludCk7CioqKioqKioqKioq KioqKgoqKiogMjQ1LDI1MCAqKioqCi0tLSAyNDcsMjUzIC0tLS0KICAJaWMtPmljX2ZsYWdzID0g SUVFRTgwMjExX0ZfSEFTUE1HVCB8IElFRUU4MDIxMV9GX0hBU0FIREVNTzsKICAJaWMtPmljX3N0 YXRlID0gSUVFRTgwMjExX1NfSU5JVDsKICAJaWMtPmljX25ld3N0YXRlID0gd2lfbmV3c3RhdGU7 CisgCWljLT5pY19zZXRfdGltID0gd2lfc2V0X3RpbTsKICAKICAJLyogRmluZCBhdmFpbGFibGUg Y2hhbm5lbCAqLwogIAlidWZsZW4gPSBzaXplb2YodmFsKTsKKioqKioqKioqKioqKioqCioqKiA3 MzcsNzQ0ICoqKioKICAJbWVtc2V0KCZmcm1oZHIsIDAsIHNpemVvZihmcm1oZHIpKTsKICAJY3Vy ID0gc2MtPnNjX3R4bmV4dDsKICAJZm9yICg7OykgewohIAkJSUZfUE9MTCgmaWMtPmljX21ndHEs IG0wKTsKISAJCWlmIChtMCAhPSBOVUxMKSB7CiAgCQkJaWYgKHNjLT5zY190eGRbY3VyXS5kX2xl biAhPSAwKSB7CiAgCQkJCWlmcC0+aWZfZmxhZ3MgfD0gSUZGX09BQ1RJVkU7CiAgCQkJCWJyZWFr OwotLS0gNzQwLDc0NiAtLS0tCiAgCW1lbXNldCgmZnJtaGRyLCAwLCBzaXplb2YoZnJtaGRyKSk7 CiAgCWN1ciA9IHNjLT5zY190eG5leHQ7CiAgCWZvciAoOzspIHsKISAJCWlmICghSUZfSVNfRU1Q VFkoJmljLT5pY19tZ3RxKSkgewogIAkJCWlmIChzYy0+c2NfdHhkW2N1cl0uZF9sZW4gIT0gMCkg ewogIAkJCQlpZnAtPmlmX2ZsYWdzIHw9IElGRl9PQUNUSVZFOwogIAkJCQlicmVhazsKKioqKioq KioqKioqKioqCioqKiA3NDgsNzUzICoqKioKLS0tIDc1MCw3ODAgLS0tLQogIAkJCSAgICAoY2Fk ZHJfdCkmZnJtaGRyLndpX2VoZHIpOwogIAkJCWZybWhkci53aV9laGRyLmV0aGVyX3R5cGUgPSAw OwogICAgICAgICAgICAgICAgICAgICAgICAgIHdoID0gbXRvZChtMCwgc3RydWN0IGllZWU4MDIx MV9mcmFtZSAqKTsKKyAJCX0gZWxzZSBpZiAoIUlGX0lTX0VNUFRZKCZpYy0+aWNfcHdyc2F2ZXEp KSB7CisgCQkJc3RydWN0IGxsYyAqbGxjOworIAorIAkJCS8qIAorIAkJCSAqIFNob3VsZCB0aGVz ZSBwYWNrZXRzIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUKKyAJCQkgKiByZWd1bGFyIHBhY2tldHMg b3IgYmVmb3JlPyAgU2luY2UgdGhleSBhcmUgYmVpbmcKKyAJCQkgKiBwcm9iZWQgZm9yLCB0aGV5 IGFyZSBwcm9iYWJseSBsZXNzIHRpbWUgY3JpdGljYWwKKyAJCQkgKiB0aGFuIG90aGVyIHBhY2tl dHMsIGJ1dCwgb24gdGhlIG90aGVyIGhhbmQsCisgCQkJICogd2Ugd2FudCB0aGUgcG93ZXIgc2F2 aW5nIG5vZGVzIHRvIGdvIGJhY2sgdG8KKyAJCQkgKiBzbGVlcCBhcyBxdWlja2x5IGFzIHBvc3Np YmxlIHRvIHNhdmUgcG93ZXIuLi4KKyAJCQkgKi8KKyAKKyAJCQlpZiAoaWMtPmljX3N0YXRlICE9 IElFRUU4MDIxMV9TX1JVTikKKyAJCQkJYnJlYWs7CisgCisgCQkJaWYgKHNjLT5zY190eGRbY3Vy XS5kX2xlbiAhPSAwKSB7CisgCQkJCWlmcC0+aWZfZmxhZ3MgfD0gSUZGX09BQ1RJVkU7CisgCQkJ CWJyZWFrOworIAkJCX0KKyAJCQlJRl9ERVFVRVVFKCZpYy0+aWNfcHdyc2F2ZXEsIG0wKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICB3aCA9IG10b2QobTAsIHN0cnVjdCBpZWVlODAyMTFfZnJh bWUgKik7CisgCQkJbGxjID0gKHN0cnVjdCBsbGMgKikgKHdoICsgMSk7CisgCQkJbV9jb3B5ZGF0 YShtMCwgNCwgRVRIRVJfQUREUl9MRU4gKiAyLAorIAkJCSAgICAoY2FkZHJfdCkmZnJtaGRyLndp X2VoZHIpOworIAkJCWZybWhkci53aV9laGRyLmV0aGVyX3R5cGUgPSBsbGMtPmxsY19zbmFwLmV0 aGVyX3R5cGU7CiAgCQl9IGVsc2UgewogIAkJCWlmIChpYy0+aWNfc3RhdGUgIT0gSUVFRTgwMjEx X1NfUlVOKQogIAkJCQlicmVhazsKKioqKioqKioqKioqKioqCioqKiA3NTksNzY3ICoqKioKICAJ CQkJYnJlYWs7CiAgCQkJfQogIAkJCUlGUV9ERVFVRVVFKCZpZnAtPmlmX3NuZCwgbTApOwotIAkJ CWlmcC0+aWZfb3BhY2tldHMrKzsKICAJCQltX2NvcHlkYXRhKG0wLCAwLCBFVEhFUl9IRFJfTEVO LCAKICAJCQkgICAgKGNhZGRyX3QpJmZybWhkci53aV9laGRyKTsKICAjaWYgTkJQRklMVEVSID4g MAogIAkJCWlmIChpZnAtPmlmX2JwZikKICAJCQkJYnBmX210YXAoaWZwLT5pZl9icGYsIG0wKTsK LS0tIDc4Niw3OTQgLS0tLQogIAkJCQlicmVhazsKICAJCQl9CiAgCQkJSUZRX0RFUVVFVUUoJmlm cC0+aWZfc25kLCBtMCk7CiAgCQkJbV9jb3B5ZGF0YShtMCwgMCwgRVRIRVJfSERSX0xFTiwgCiAg CQkJICAgIChjYWRkcl90KSZmcm1oZHIud2lfZWhkcik7CisgCQkJaWZwLT5pZl9vcGFja2V0cysr OwogICNpZiBOQlBGSUxURVIgPiAwCiAgCQkJaWYgKGlmcC0+aWZfYnBmKQogIAkJCQlicGZfbXRh cChpZnAtPmlmX2JwZiwgbTApOwoqKioqKioqKioqKioqKioKKioqIDc3Miw3OTAgKioqKgogIAkJ CQljb250aW51ZTsKICAJCQl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgd2ggPSBtdG9kKG0w LCBzdHJ1Y3QgaWVlZTgwMjExX2ZyYW1lICopOwogIAkJCWlmIChpYy0+aWNfb3Btb2RlID09IElF RUU4MDIxMV9NX0hPU1RBUCAmJgogIAkJCSAgICAhSUVFRTgwMjExX0lTX01VTFRJQ0FTVCh3aC0+ aV9hZGRyMSkgJiYKICAJCQkgICAgKHdoLT5pX2ZjWzBdICYgSUVFRTgwMjExX0ZDMF9UWVBFX01B U0spID09CiEgCQkJICAgIElFRUU4MDIxMV9GQzBfVFlQRV9EQVRBICYmCiEgCQkJICAgICgobmkg PSBpZWVlODAyMTFfZmluZF9ub2RlKGljLCB3aC0+aV9hZGRyMSkpID09CiEgCQkJICAgIE5VTEwg fHwgbmktPm5pX2Fzc29jaWQgPT0gMCkpIHsKISAJCQkJbV9mcmVlbShtMCk7CiEgCQkJCWlmcC0+ aWZfb2Vycm9ycysrOwohIAkJCQljb250aW51ZTsKICAJCQl9Ci0gCQkJaWYgKGljLT5pY19mbGFn cyAmIElFRUU4MDIxMV9GX1dFUE9OKQotIAkJCQl3aC0+aV9mY1sxXSB8PSBJRUVFODAyMTFfRkMx X1dFUDsKLSAKICAJCX0KICAjaWYgTkJQRklMVEVSID4gMAogIAkJaWYgKGljLT5pY19yYXdicGYp Ci0tLSA3OTksODIxIC0tLS0KICAJCQkJY29udGludWU7CiAgCQkJfQogICAgICAgICAgICAgICAg ICAgICAgICAgIHdoID0gbXRvZChtMCwgc3RydWN0IGllZWU4MDIxMV9mcmFtZSAqKTsKKyAJCQlp ZiAoaWMtPmljX2ZsYWdzICYgSUVFRTgwMjExX0ZfV0VQT04pCisgCQkJCXdoLT5pX2ZjWzFdIHw9 IElFRUU4MDIxMV9GQzFfV0VQOwogIAkJCWlmIChpYy0+aWNfb3Btb2RlID09IElFRUU4MDIxMV9N X0hPU1RBUCAmJgogIAkJCSAgICAhSUVFRTgwMjExX0lTX01VTFRJQ0FTVCh3aC0+aV9hZGRyMSkg JiYKICAJCQkgICAgKHdoLT5pX2ZjWzBdICYgSUVFRTgwMjExX0ZDMF9UWVBFX01BU0spID09CiEg CQkJICAgIElFRUU4MDIxMV9GQzBfVFlQRV9EQVRBKSB7CiEgCQkJCW5pID0gaWVlZTgwMjExX2Zp bmRfbm9kZShpYywgd2gtPmlfYWRkcjEpOwohIAkJCQlpZiAobmkgPT0gTlVMTCB8fCBuaS0+bmlf YXNzb2NpZCA9PSAwKSB7CiEgCQkJCQltX2ZyZWVtKG0wKTsKISAJCQkJCWlmcC0+aWZfb2Vycm9y cysrOwohIAkJCQkJY29udGludWU7CiEgCQkJCX0KISAJCQkJaWYgKG5pLT5uaV9wd3JzYXZlICYg SUVFRTgwMjExX1BXUl9TTEVFUCkgewohIAkJCQkJaWVlZTgwMjExX3B3cnNhdmUoaWMsIG5pLCBt MCk7CiEgCQkJCQljb250aW51ZTsKISAJCQkJfQogIAkJCX0KICAJCX0KICAjaWYgTkJQRklMVEVS ID4gMAogIAkJaWYgKGljLT5pY19yYXdicGYpCioqKioqKioqKioqKioqKgoqKiogMjIzMiwyMjM3 ICoqKioKLS0tIDIyNjMsMjI4MCAtLS0tCiAgCiAgCS8qIHNraXAgc3RhbmRhcmQgaWVlZTgwMjEx IGhhbmRsaW5nICovCiAgCXJldHVybiBFSU5QUk9HUkVTUzsKKyB9CisgCisgc3RhdGljIGludAor IHdpX3NldF90aW0oc3RydWN0IGllZWU4MDIxMWNvbSAqaWMsIGludCBhaWQsIGludCB3aGljaCkK KyB7CisgCXN0cnVjdCB3aV9zb2Z0YyAqc2MgPSBpYy0+aWNfc29mdGM7CisgCisgCWFpZCAmPSB+ MHhjMDAwOworIAlpZiAod2hpY2gpCisgCQlhaWQgfD0gMHg4MDAwOworIAorIAlyZXR1cm4gd2lf d3JpdGVfdmFsKHNjLCBXSV9SSURfU0VUX1RJTSwgYWlkKTsKICB9CiAgCiAgc3RhdGljIGludApJ bmRleDogZGV2L2ljL3dpX2llZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMv c3lzL2Rldi9pYy93aV9pZWVlLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTkKZGlmZiAtYyAt cjEuMTkgd2lfaWVlZS5oCioqKiBkZXYvaWMvd2lfaWVlZS5oCTIwMDIvMTEvMTYgMDY6MDI6NTQJ MS4xOQotLS0gZGV2L2ljL3dpX2llZWUuaAkyMDAzLzAzLzE5IDIxOjIwOjQ3CioqKioqKioqKioq KioqKgoqKiogMjM3LDI0MiAqKioqCi0tLSAyMzcsMjQzIC0tLS0KICAjZGVmaW5lIFdJX1JJRF9D TkZBVVRITU9ERQkweEZDMkEKICAjZGVmaW5lIFdJX1JJRF9ST0FNSU5HX01PREUJMHhGQzJECiAg I2RlZmluZSBXSV9SSURfT1dOX0JFQUNPTl9JTlQJMHhGQzMzIC8qIGJlYWNvbiB4bWl0IHRpbWUg Zm9yIEJTUyBjcmVhdGlvbiAqLworICNkZWZpbmUgV0lfUklEX1NFVF9USU0JCTB4RkM0MAogICNk ZWZpbmUgV0lfUklEX0RCTV9BREpVU1QJMHhGQzQ2IC8qIFJTU0kgLSBXSV9SSURfREJNX0FESlVT VCB+IGRCbSAqLwogICNkZWZpbmUgV0lfUklEX0JBU0lDX1JBVEUJMHhGQ0IzCiAgI2RlZmluZSBX SV9SSURfU1VQUE9SVF9SQVRFCTB4RkNCNAo= --Multipart_Wed__19_Mar_2003_16:19:29_-0800_08161400-- -- *bsd wireless list, a bawug thing <http://www.bawug.org/> [un]subscribe: http://lists.bawug.org/mailman/listinfo/bsd-wireless/