Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Oct 2004 15:40:13 EDT
From:      "Rogier R. Mulhuijzen" <lists@bsdchicks.com>
To:        wpaul@freebsd.org
Cc:        freebsd-current@freebsd.org
Subject:   [PATCH] NDISulator fixed to work with wicontrol -L and dstumbler
Message-ID:  <BasiliX-1.1.0-1098906013417ff99debc6c@artemis.drwilco.net>

next in thread | raw e-mail | index | archive | help
--59b6bb23d26f64278b26095bbbcfd0f8-1098906013
Content-Type: text/plain

Subject says it all.

I did some poking around in net80211 and dev/if_ndis (shouldn't that be just dev/ndis, like all other if_ modules?) and extended if_ndis.c some so that it answers the ioctl that's used by wicontrol and other userland programs (like dstumbler, part of the net-mgmt/bsd-airtools package/port) to list found 802.11 APs.

I do have a few things that made me scratch my head.

1) Currently if there's more APs then can fit in the wreq struct, they're just ignored. There's no way to get a continued list, nor is there any flag to show the requestor that there's more. The wreq struct is a fixed size, and can't be extended without recompiling both kernel and userland.

2) The wi_rates array can only fit 10 rates, but 802.11g has more than 10 rates. Again, this can't be extended without recompiling kernel & userland. Also the 10 is hardcoded in net80211/ieee80211_ioctl.c. (I went ahead and copied it, in a "if it's OK there, it's OK here" kinda mood. But I'll be happy to supply patches for both)

3) When trying to stumble without bringing up the interface at least once, I get a big fat panic. But it seems to not be related to my changes. Still investigating that bit.

Patch is attached but can be found at http://www.bsdchicks.com/patches/if_ndis.c.patch too.

I'm still a kernel-hacking newb, so please review thouroughly (I managed to trample over random kernel space with early versions... fun fun fun), and fire off any comments you might have. Also my whitespace use might not be standard, since I don't know what the standard is.

Greetings,

          DocWilco

--59b6bb23d26f64278b26095bbbcfd0f8-1098906013
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Description: if_ndis.c.patch
Content-Disposition: attachment; filename="if_ndis.c.patch"

LS0tIHN5cy9kZXYvaWZfbmRpcy9pZl9uZGlzLmMub3JpZwlXZWQgT2N0IDI3
IDE3OjAxOjU1IDIwMDQKKysrIHN5cy9kZXYvaWZfbmRpcy9pZl9uZGlzLmMJ
V2VkIE9jdCAyNyAyMToxMDoxOCAyMDA0CkBAIC0yMDExLDcgKzIwMTEsOSBA
QAogCW5kaXNfODAyMTFfYnNzaWRfbGlzdF9leCAqYmw7CiAJbmRpc193bGFu
X2Jzc2lkX2V4CSp3YjsKIAlzdHJ1Y3Qgd2lfYXBpbmZvCSphcGk7Ci0JaW50
CQkJZXJyb3IsIGksIGosIGxlbiwgbWF4YXBzOworCXN0cnVjdCB3aV9zY2Fu
X3AyX2hkciAqcDI7CisJc3RydWN0IHdpX3NjYW5fcmVzIAkqcmVzOworCWlu
dAkJCWVycm9yLCBpLCBqLCBrLCBsZW4sIG1heGFwczsKIAogCXNjID0gaWZw
LT5pZl9zb2Z0YzsKIAlpZnIgPSAoc3RydWN0IGlmcmVxICopZGF0YTsKQEAg
LTIwNzAsNiArMjA3Miw2OSBAQAogCQkJYXBpKys7CiAJCQl3YiA9IChuZGlz
X3dsYW5fYnNzaWRfZXggKikoKGNoYXIgKil3YiArIHdiLT5ud2J4X2xlbik7
CiAJCX0KKwkJZnJlZShibCwgTV9ERVZCVUYpOworCQllcnJvciA9IGNvcHlv
dXQoJndyZXEsIGlmci0+aWZyX2RhdGEsIHNpemVvZih3cmVxKSk7CisJCWJy
ZWFrOworCWNhc2UgV0lfUklEX1NDQU5fUkVTOgorCQlsZW4gPSAwOworCQll
cnJvciA9IG5kaXNfc2V0X2luZm8oc2MsIE9JRF84MDJfMTFfQlNTSURfTElT
VF9TQ0FOLAorCQkgICAgTlVMTCwgJmxlbik7CisJCWlmIChlcnJvciA9PSAw
KQorCQkJdHNsZWVwKCZlcnJvciwgUFBBVVNFfFBDQVRDSCwgInNzaWRzY2Fu
IiwgaHogKiAyKTsKKwkJbGVuID0gMDsKKwkJZXJyb3IgPSBuZGlzX2dldF9p
bmZvKHNjLCBPSURfODAyXzExX0JTU0lEX0xJU1QsIE5VTEwsICZsZW4pOwor
CQlpZiAoZXJyb3IgIT0gRU5PU1BDKSAKKwkJCWJyZWFrOworCQlibCA9IG1h
bGxvYyhsZW4sIE1fREVWQlVGLCBNX1dBSVRPS3xNX1pFUk8pOworCQllcnJv
ciA9IG5kaXNfZ2V0X2luZm8oc2MsIE9JRF84MDJfMTFfQlNTSURfTElTVCwg
YmwsICZsZW4pOworCQlpZiAoZXJyb3IpIHsKKwkJCWZyZWUoYmwsIE1fREVW
QlVGKTsKKwkJCWJyZWFrOworCQl9CisKKwkJayA9IDA7CisJCXAyID0gKHN0
cnVjdCB3aV9zY2FuX3AyX2hkciAqKXdyZXEud2lfdmFsOworCQlyZXMgPSAo
dm9pZCAqKSZwMlsxXTsKKwkJd2IgPSBibC0+bmJseF9ic3NpZDsKKwkJd2hp
bGUgKChjYWRkcl90KShyZXMgKyAxKSA8IChjYWRkcl90KSgmd3JlcSArIDEp
ICYmIGsgPCBibC0+bmJseF9pdGVtcykgeworCQkJYnplcm8ocmVzLCBzaXpl
b2YoKnJlcykpOworCQkJYmNvcHkoJndiLT5ud2J4X21hY2FkZHIsICZyZXMt
PndpX2Jzc2lkLAorCQkJICAgIHNpemVvZihyZXMtPndpX2Jzc2lkKSk7CisJ
CQlyZXMtPndpX3NzaWRfbGVuID0gd2ItPm53Ynhfc3NpZC5uc19zc2lkbGVu
OworCQkJYmNvcHkoJndiLT5ud2J4X3NzaWQubnNfc3NpZCwgJnJlcy0+d2lf
c3NpZCwgcmVzLT53aV9zc2lkX2xlbik7CisJCQlpZiAod2ItPm53YnhfcHJp
dmFjeSkgeworCQkJCXJlcy0+d2lfY2FwaW5mbyB8PSBJRUVFODAyMTFfQ0FQ
SU5GT19QUklWQUNZOworCQkJfQorCQkJLyogWFhYIFdoZXJlIGNhbiB3ZSBn
ZXQgbm9pc2UgaW5mb3JtYXRpb24/ICovCisJCQlyZXMtPndpX3NpZ25hbCA9
IHdiLT5ud2J4X3Jzc2kgKyAxNDk7CS8qIFhYWCAqLworCQkJcmVzLT53aV9j
aGFuID0KKwkJCSAgICBpZWVlODAyMTFfbWh6MmllZWUod2ItPm53YnhfY29u
ZmlnLm5jX2RzY29uZmlnIC8KKwkJCSAgICAxMDAwLCAwKTsKKwkJCS8qIElu
ICJhdXRvIiBpbmZyYXN0cnVjdHVyZSBtb2RlLCB0aGlzIGlzIHVzZWxlc3Mu
ICovCisJCQlpZiAod2ItPm53YnhfbmV0aW5mcmEgPT0gTkRJU184MDIxMV9O
RVRfSU5GUkFfSUJTUykKKwkJCQlyZXMtPndpX2NhcGluZm8gfD0gSUVFRTgw
MjExX0NBUElORk9fSUJTUzsKKwkJCWlmICh3Yi0+bndieF9sZW4gPiBzaXpl
b2YobmRpc193bGFuX2Jzc2lkKSkgeworCQkJCWogPSBzaXplb2YobmRpc184
MDIxMV9yYXRlc19leCk7CisJCQkJLyogaGFuZGxlIG90aGVyIGV4dGVuZGVk
IHRoaW5ncyAqLworCQkJfSBlbHNlCisJCQkJaiA9IHNpemVvZihuZGlzXzgw
MjExX3JhdGVzKTsKKwkJCWZvciAoaSA9IHJlcy0+d2lfcmF0ZSA9IDA7IGkg
PCBqOyBpKyspCisJCQkJcmVzLT53aV9yYXRlID0gTUFYKHJlcy0+d2lfcmF0
ZSwKKwkJCQkgICAgd2ItPm53Ynhfc3VwcG9ydGVkcmF0ZXNbaV0pOworCQkJ
bWVtY3B5KHJlcy0+d2lfc3JhdGVzLCB3Yi0+bndieF9zdXBwb3J0ZWRyYXRl
cywKKwkJCQlNSU4oaiwgMTApKTsKKwkJCWlmIChqIDwgMTApCisJCQkJcmVz
LT53aV9zcmF0ZXNbal0gPSAwOworCQkJcmVzLT53aV9yc3ZkID0gMDsKKwkJ
CXJlcysrOworCQkJd2IgPSAobmRpc193bGFuX2Jzc2lkX2V4ICopKChjaGFy
ICopd2IgKyB3Yi0+bndieF9sZW4pOworCQkJaysrOworCQl9CisJCXAyLT53
aV9yc3ZkID0gMDsKKwkJcDItPndpX3JlYXNvbiA9IGs7CisJCXdyZXEud2lf
bGVuID0gKHNpemVvZigqcDIpICsgc2l6ZW9mKCpyZXMpICogaykgLyAyOwor
CQkvKiBYWFg6IHRoaXMgaXMgX3NvXyBoYWNraXNoLCBzaG91bGQgcHJvYmFi
bHkgYmUgZml4ZWQgaW4gd2ljb250cm9sICovCisJCXdyZXEud2lfbGVuKys7
CiAJCWZyZWUoYmwsIE1fREVWQlVGKTsKIAkJZXJyb3IgPSBjb3B5b3V0KCZ3
cmVxLCBpZnItPmlmcl9kYXRhLCBzaXplb2Yod3JlcSkpOwogCQlicmVhazsK
--59b6bb23d26f64278b26095bbbcfd0f8-1098906013--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BasiliX-1.1.0-1098906013417ff99debc6c>