Linux - SoftwareThis forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I'm trying to build a driver for my wireless card from the source at http://castet.matthieu.free.fr/airo/. I put the airo.c file and the Makefile in /usr/src/airo. When I use the make command, I get:
And the same warning message for crypto_digest_setkey, crypto_digest_final, try_to_freeze, and crypto_digest_update.
I then do make install and make clean, but the resulting module won't load ("Unknown symbol in module"). dmesg indicates the unknown symbols are the 5 listed above.
I'm running Ubuntu, and using a 2.6.20 kernel I compiled with the ck patches, and a few tweaks in the menuconfig that had nothing to do with crypto.
My question is: What do I need to install/do differently/change to build the module correctly? I tried apt-get install libcrypto++-dev, but that didn't help.
Your problem is that your kernel is too new for your driver (or more bluntly, your module uses kernel functions that have been removed in the latest kernel). The fix is simple, though (crypto_digest functions have been replaced by crypto_hash functions). Just apply the following patch to airo.c and you should be fine.
Your problem is that your kernel is too new for your driver (or more bluntly, your module uses kernel functions that have been removed in the latest kernel). ]
Well, that would explain a thing or two. ;-)
Quote:
Originally Posted by osor
The fix is simple, though (crypto_digest functions have been replaced by crypto_hash functions). Just apply the following patch to airo.c and you should be fine.
Well, either I don't patch correctly, or the patch has a problem of some sort.
root@lapdog:/usr/src/airo# patch -p1 -o newairo.c airo.patch airo.c.old
patching file airo.c.old
Hunk #1 FAILED at 2261.
patch: **** unexpected end of file in patch
Leave it to a WAN Engineer/Linux Student to not figure this out! :-)
Well, either I don't patch correctly, or the patch has a problem of some sort.
Sorry ’bout that, I believe there was an error on my part with tabs being replaced by spaces in the post. It should work now (this is what I typed, just to make sure):
That did indeed help. patch -i patch.new now comes up with a patched airo.c. Alas ... apparently another kernel change has happened. One item in the list above, try_to_freeze, still causes the module to bomb out.
Also, if I remove the 1 line of code that uses that symbol, I then hit additional version errors with 3 driver-specific symbols, undoubtedly due to my newer kernel and the older source code the original file is using.
If you are excited to keep patching, I'll happily upload my new errors. Otherwise, it probably makes more sense to go with an older kernel that's happy with this source, or else wait for someone to come up with a better fix for WPA functions on this goofy wireless card.
That did indeed help. patch -i patch.new now comes up with a patched airo.c. Alas ... apparently another kernel change has happened. One item in the list above, try_to_freeze, still causes the module to bomb out.
Also, if I remove the 1 line of code that uses that symbol, I then hit additional version errors with 3 driver-specific symbols, undoubtedly due to my newer kernel and the older source code the original file is using.
If you are excited to keep patching, I'll happily upload my new errors. Otherwise, it probably makes more sense to go with an older kernel that's happy with this source, or else wait for someone to come up with a better fix for WPA functions on this goofy wireless card.
Many Thanks,
doc
That’s very strange… For try_to_freeze(), try adding “#include <linux/freezer.h>” to the beginning of airo.c. What are the other problems you are having? Can you post the full make output, the insmod output, and the relevant dmesg output.
It then fails to load with the same error I described above (undefined symbol). I'll try adding the line you recommend and report back with a result.
2) There's a second driver file, airo_cs, which I believe is used to get to the card on the PCMCIA bus. It now has version conflicts with the airo piece:
root@lapdog:/usr/src/aironet# modprobe airo
root@lapdog:/usr/src/aironet# modprobe airo_cs
FATAL: Error inserting airo_cs (/lib/modules/2.6.20-ck1/kernel/drivers/net/wireless/airo_cs.ko): Unknown symbol in module, or unknown parameter (see dmesg)
dmesg stuff:
[ 296.862000] airo_cs: disagrees about version of symbol init_airo_card
[ 296.862000] airo_cs: Unknown symbol init_airo_card
[ 296.864000] airo_cs: disagrees about version of symbol stop_airo_card
[ 296.864000] airo_cs: Unknown symbol stop_airo_card
[ 296.864000] airo_cs: disagrees about version of symbol reset_airo_card
[ 296.864000] airo_cs: Unknown symbol reset_airo_card
So to get this working, I'd need to know which source version was originally used to make the hacked up airo.c, get the same version of airo_cs.c, and then make it under this kernel. Or, alternately, get the original diff file used to create the airo.c in the first place. Or, ???
All this because Cisco never released an updated Linux driver with WPA in it. Sigh.
Thanks Again,
doc
Last edited by doctorcisco; 03-29-2007 at 10:58 PM.
2) There's a second driver file, airo_cs, which I believe is used to get to the card on the PCMCIA bus. It now has version conflicts with the airo piece:
So to get this working, I'd need to know which source version was originally used to make the hacked up airo.c, get the same version of airo_cs.c, and then make it under this kernel. Or, alternately, get the original diff file used to create the airo.c in the first place. Or, ???
All this because Cisco never released an updated Linux driver with WPA in it. Sigh.
Thanks Again,
doc
Hello. I think the fix here is to rebuild your airo_cs module so it looks for the symbols in the correct place. The easiest method would be to replace the vanilla airo.c file:
Code:
$ cp airo.c "/lib/modules/$(uname -r)/build/drivers/net/wireless" # where airo.c is from Matthieu Castet, but patched as above
$ cd "/lib/modules/$(uname -r)/build"
$ touch drivers/net/wireless/airo_cs.c
$ grep CONFIG_AIRO .config # Just to make sure both drivers are to be made as modules
CONFIG_AIRO=m
CONFIG_AIRO_CS=m
$ make
$ sudo make modules_install
There are probably other ways (namely, move airo.ko to /lib/modules/`uname -r`/kernel/drivers/net/wireless, run depmod, cd to your kernel source, touch the file airo_cs.c, undefine CONFIG_AIRO in .config, remake, reinstall — NOTE: not sure if this will work).
1) include linux/freeze<h> did fix the try_to_freeze error.
2) Rebuilding airo and airo_cs with the modified airo.c file down in the src tree for the drivers didn't help the airo_cs problem:
[ 117.418000] airo_cs: disagrees about version of symbol init_airo_card
[ 117.418000] airo_cs: Unknown symbol init_airo_card
[ 117.419000] airo_cs: disagrees about version of symbol stop_airo_card
[ 117.419000] airo_cs: Unknown symbol stop_airo_card
[ 117.420000] airo_cs: disagrees about version of symbol
reset_airo_card
[ 117.420000] airo_cs: Unknown symbol reset_airo_card
So ... I'll try your other suggestions on building airo_cs, but this is looking a bit grim for this module version. Again, thanks for all your help.
Do you get any errors when building? In particular, can you post the make output (it should be rather short, since you are only really compiling two files, with the rest being linked).
Code:
$ cd "/lib/modules/$(uname -r)/build"
$ touch drivers/net/wireless/airo{,_cs}.c
$ make
## Post this output (You can snip all lines beginning with CHECK) ##
I got an email from Matthieu Castet saying that the driver you were using has been relocated to Gna! and is being actively developed there. There are sources that compile against the latest kernel and there is also a mailing list you might find useful.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.