Bugzilla – Bug 1067
Fails to compile against ieee80211 version 1.1.14
Last modified: 2007-02-28 22:26:04
You need to log in before you can comment on or make changes to this bug.
ieee80211_tx_frame function was redefined in version 1.1.14 of the ieee80211 stack. The function expects two more parameters (named total_len and encrypt_mpdu), so the ipw3945 driver fails to build from source, giving the following errors: [snip] drivers/net/wireless/ipw3945.c: In function ‘ipw_send_associate’: drivers/net/wireless/ipw3945.c:4292: error: too few arguments to function ‘ieee80211_tx_frame’ drivers/net/wireless/ipw3945.c: In function ‘ipw_bg_daemon_cmd’: drivers/net/wireless/ipw3945.c:4765: error: too few arguments to function ‘ieee80211_tx_frame’ drivers/net/wireless/ipw3945.c: In function ‘ipw_auth_work’: drivers/net/wireless/ipw3945.c:9381: error: too few arguments to function ‘ieee80211_tx_frame’ drivers/net/wireless/ipw3945.c:9426: error: too few arguments to function ‘ieee80211_tx_frame’ drivers/net/wireless/ipw3945.c: In function ‘ipw_handle_probe_request’: drivers/net/wireless/ipw3945.c:9496: error: too few arguments to function ‘ieee80211_tx_frame’ make[5]: *** [drivers/net/wireless/ipw3945.o] Error 1 make[4]: *** [drivers/net/wireless] Error 2 make[3]: *** [drivers/net] Error 2 make[2]: *** [drivers] Error 2 make[2]: Leaving directory `/home/bibe/linux-source-2.6.16' make[1]: *** [debian/stamp-build-kernel] Error 2 make[1]: Leaving directory `/home/bibe/linux-source-2.6.16' make: *** [stamp-buildpackage] Error 2
Can you try ipw3945-1.0.10 (http://bughost.org/pre/ipw3945-1.0.10.tgz) and let me know if the build succeeds? And if not, what the new errors are. I've been making several changes to the Makefile and want to get some coverage from different users before I push the snapshot to SF. Thanks, James
(In reply to comment #1) > Can you try ipw3945-1.0.10 (http://bughost.org/pre/ipw3945-1.0.10.tgz) and let > me know if the build succeeds? And if not, what the new errors are. I've been > making several changes to the Makefile and want to get some coverage from > different users before I push the snapshot to SF. > > Thanks, > James I'm having the same problem. Running SuSE 10.1, with a stock 2.6.16.13-4-smp kernel. After trying ipw3945 version 1.0.10 I get the following warnings. ~/files/wireless/ipw3945-1.0.10> make make: Warning: File `Makefile' has modification time 2.1e+03 s in the future Using ieee80211 subsystem version '1.1.14' (API v2) from: /lib/modules/2.6.16.13-4-smp/ make -C /lib/modules/2.6.16.13-4-smp/build M=/home/rwolf/files/wireless/ipw3945-1.0.10 modules make[1]: Entering directory `/usr/src/linux-2.6.16.13-4-obj/i386/smp' make -C ../../../linux-2.6.16.13-4 O=../linux-2.6.16.13-4-obj/i386/smp modules make[4]: Warning: File `/home/rwolf/files/wireless/ipw3945-1.0.10/Makefile' has modification time 2.1e+03 s in the future CC [M] /home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.o make[4]: warning: Clock skew detected. Your build may be incomplete. Building modules, stage 2. MODPOST WARNING: "alloc_ieee80211" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "free_ieee80211" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_wx_get_encodeext" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_wx_set_encodeext" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_wx_get_encode" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_wx_set_encode" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_wx_get_scan" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_freq_to_channel" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_set_geo" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_get_channel" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_rx" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_rx_mgt" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_get_geo" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_channel_to_index" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_tx_frame" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_get_channel_flags" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_is_valid_channel" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "escape_essid" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! WARNING: "ieee80211_txb_free" [/home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko] undefined! CC /home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.mod.o LD [M] /home/rwolf/files/wireless/ipw3945-1.0.10/ipw3945.ko make[1]: Leaving directory `/usr/src/linux-2.6.16.13-4-obj/i386/smp' make: warning: Clock skew detected. Your build may be incomplete.
Hi! Concerning building with ipw3945-1.0.10 I interestingly still get the same problems when building: /src/wlannew/ipw3945-1.0.10/ipw3945.c: In function 'ipw_send_associate': /src/wlannew/ipw3945-1.0.10/ipw3945.c:4405: error: too few arguments to function 'ieee80211_tx_frame' /src/wlannew/ipw3945-1.0.10/ipw3945.c: In function 'ipw_bg_daemon_cmd': /src/wlannew/ipw3945-1.0.10/ipw3945.c:4882: error: too few arguments to function 'ieee80211_tx_frame' /src/wlannew/ipw3945-1.0.10/ipw3945.c: In function 'ipw_auth_work': /src/wlannew/ipw3945-1.0.10/ipw3945.c:9451: error: too few arguments to function 'ieee80211_tx_frame' /src/wlannew/ipw3945-1.0.10/ipw3945.c:9502: error: too few arguments to function 'ieee80211_tx_frame' /src/wlannew/ipw3945-1.0.10/ipw3945.c: In function 'ipw_handle_probe_request': /src/wlannew/ipw3945-1.0.10/ipw3945.c:9576: error: too few arguments to function 'ieee80211_tx_frame' plus a new one: /src/wlannew/ipw3945-1.0.10/ipw3945.c:9578: error: expected ';' before '}' token make[2]: *** [/src/wlannew/ipw3945-1.0.10/ipw3945.o] Error 1 The git tree I will try to fetch soon (never worked with git before). Thanks a lot and all the best Norbert
(In reply to comment #3) > Hi! > Concerning building with ipw3945-1.0.10 I interestingly still get the same > problems when building: What are the first few lines of the make output? If you pull the tree from GIT, the current version should dislay something like: jketreno@callisto /home/repos/ext/ipw3945 $ make Using ieee80211 subsystem version 'git-1.1.7' (API v1) from: Base: /lib/modules/2.6.16-rc5/ Path: /lib/modules/2.6.16-rc5/include/ EXTRA_CFLAGS = -I/lib/modules/2.6.16-rc5/include/ -DIEEE80211_API_VERSION=1 -g -Wa,-adhlms=check_inc.lst make -C /lib/modules/2.6.16-rc5/build M=/home/repos/ext/ipw3945 modules .... > plus a new one: > /src/wlannew/ipw3945-1.0.10/ipw3945.c:9578: error: expected ';' before '}' Yeah, I missed a semi-colon when putting in the patch to make the code compatible with both the newer ieee80211 subsystems and the older. GIT has a fix now. If you can install the 'cogito' packages into your system, you can run: cg-clone rsync://bughost.org/repos/ipw3945.git/ and that will create the tree you need. If you run 'make' and the driver compiles correctly, the build itself will still fail (the GIT tree has some extra utilities -- one of which is currently broken in the build; I need to fix that) Thanks, James
Hi James! I already have cloned the tree with cogito and just now tried to compile it: [/src/wlannew/git/ipw3945.build] make Using ieee80211 subsystem version 'git-1.1.13' (API v1) from: Base: /lib/modules/2.6.17-rc6-mm2/build/ Path: /lib/modules/2.6.17-rc6-mm2/build/include/ EXTRA_CFLAGS = -DIEEE80211_API_VERSION=1 -g -Wa,-adhlms=check_inc.lst make -C /lib/modules/2.6.17-rc6-mm2/build M=/src/wlannew/git/ipw3945.build modules make[1]: Entering directory `/usr/src/linux-2.6.17-rc6-mm2' CC [M] /src/wlannew/git/ipw3945.build/ipw3945.o /src/wlannew/git/ipw3945.build/ipw3945.c: In function 'ipw_send_associate': /src/wlannew/git/ipw3945.build/ipw3945.c:4354: error: too few arguments to function 'ieee80211_tx_frame' So what is wrong here? Or am I stupid? Am I missing something? It seems that my kernel source has been tricked with. Could it be that trying to build the ieee80211 tree changes something there? Best wishes Norbert
I tried to compile version 1.0.10, starting from a working 2.6.16.20 kernel patched with ieee80211-1.1.13 and ipw3945-1.0.4. I compiled ieee80211-1.1.14 "externally", then I unpacked ipw3945-1.0.10 and I got: --- bibe@blinky:/usr/src/ipw3945-1.0.10(0)$ make Using ieee80211 subsystem version '1.1.14' (API v2) from: /lib/modules/2.6.16.20/ make -C /lib/modules/2.6.16.20/build M=/usr/src/ipw3945-1.0.10 modules make[1]: Entering directory `/usr/src/linux-headers-2.6.16.20' CC [M] /usr/src/ipw3945-1.0.10/ipw3945.o Building modules, stage 2. MODPOST *** Warning: "ieee80211_set_geo" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_freq_to_channel" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_wx_set_encode" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_rx_mgt" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_get_channel" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_tx_frame" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_wx_get_encodeext" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_wx_set_encodeext" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_wx_get_encode" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_wx_get_scan" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_channel_to_index" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_txb_free" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_rx" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "alloc_ieee80211" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_get_geo" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "escape_essid" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_get_channel_flags" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "ieee80211_is_valid_channel" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! *** Warning: "free_ieee80211" [/usr/src/ipw3945-1.0.10/ipw3945.ko] undefined! CC /usr/src/ipw3945-1.0.10/ipw3945.mod.o LD [M] /usr/src/ipw3945-1.0.10/ipw3945.ko make[1]: Leaving directory `/usr/src/linux-headers-2.6.16.20' --- The module did compile, and I could load it without warnings. This is the dmesg output: --- ieee80211_crypt: unregistered algorithm 'NULL' ieee80211_crypt: registered algorithm 'NULL' ieee80211: 802.11 data/management/control stack, 1.1.14 ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com> ipw3945: Intel(R) PRO/Wireless 3945 Network Connection driver for Linux, 1.0.10mp ipw3945: Copyright(c) 2003-2006 Intel Corporation ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 19 (level, low) -> IRQ 177 PCI: Setting latency timer of device 0000:03:00.0 to 64 ipw3945: Detected Intel PRO/Wireless 3945ABG Network Connection ipw3945: Detected geography ABG (13 802.11bg channels, 23 802.11a channels) --- The connection works well.
Can you try with 1.0.12 (or the unstable branch in the GIT tree?) and let us know if it works as you would expect with the ieee80211-1.1.14 version? Thanks, James
Reopening and marking as fixed pending update from reporter. Please reopen and add a note if you still encounter this problem when using ieee80211-1.1.14 and ipw3945-1.0.12 or newer. Thanks, James
Compiling and installing ieee80211-1.1.14 and ipw3945-1.0.12 against a working kernel using make (and make install, in the first case) works OK, so I consider this bug closed. Anyway, I tried to use the included patch_kernel scripts, against a working kernel tree (2.6.17.4 vanilla kernel + ieee80211-1.1.13 + ipw3945-1.0.5), adding ieee80211-1.1.14 (with make KSRC=~/linux-2.6.17.4 patch_kernel) and ipw3945-1.0.12 (with make KSRC=~/linux-2.6.17.4 add_radiotap and make KSRC=~/linux-2.6.17.4 patch_kernel). Here is what I get: [ ... ] CC [M] drivers/net/wireless/wl3501_cs.o CC [M] drivers/net/wireless/ipw3945.o drivers/net/wireless/ipw3945.c:70:5: warning: "IEEE80211_API_VERSION" is not defined drivers/net/wireless/ipw3945.c:71:5: warning: "IEEE80211_API_VERSION" is not defined drivers/net/wireless/ipw3945.c:72:2: error: #error Incompatible ieee80211 subsystem version. Please upgrade ipw3945 driver sources. drivers/net/wireless/ipw3945.c:4406:5: warning: "IEEE80211_API_VERSION" is not defined drivers/net/wireless/ipw3945.c: In function ‘ipw_send_associate’: drivers/net/wireless/ipw3945.c:4413: error: too few arguments to function ‘ieee80211_tx_frame’ drivers/net/wireless/ipw3945.c:4882:5: warning: "IEEE80211_API_VERSION" is not defined drivers/net/wireless/ipw3945.c: In function ‘ipw_bg_daemon_cmd’: drivers/net/wireless/ipw3945.c:4889: error: too few arguments to function ‘ieee80211_tx_frame’ drivers/net/wireless/ipw3945.c:9390:5: warning: "IEEE80211_API_VERSION" is not defined drivers/net/wireless/ipw3945.c: In function ‘ipw_auth_work’: drivers/net/wireless/ipw3945.c:9470: error: too few arguments to function ‘ieee80211_tx_frame’ drivers/net/wireless/ipw3945.c:9516:5: warning: "IEEE80211_API_VERSION" is not defined drivers/net/wireless/ipw3945.c:9520: error: too few arguments to function ‘ieee80211_tx_frame’ drivers/net/wireless/ipw3945.c:9590:5: warning: "IEEE80211_API_VERSION" is not defined drivers/net/wireless/ipw3945.c: In function ‘ipw_handle_probe_request’: drivers/net/wireless/ipw3945.c:9593: error: too few arguments to function ‘ieee80211_tx_frame’ make[5]: *** [drivers/net/wireless/ipw3945.o] Error 1 make[4]: *** [drivers/net/wireless] Error 2 make[3]: *** [drivers/net] Error 2 I close this bug, since the statement "Fails to compile against ieee80211 version 1.1.14" is wrong now. Thank you!
"Anyway, I tried to use the included patch_kernel scripts, against a working kernel tree (2.6.17.4 vanilla kernel + ieee80211-1.1.13 + ipw3945-1.0.5), adding ieee80211-1.1.14 (with make KSRC=~/linux-2.6.17.4 patch_kernel) and ipw3945-1.0.12 (with make KSRC=~/linux-2.6.17.4 add_radiotap and make KSRC=~/linux-2.6.17.4 patch_kernel). Here is what I get:" I get the same results with ipw-1.1.0. I would not consider this bug closed, since something is apparently broken with either the patch_kernel scripts or the documentation recommending ieee80211-1.1.12 or above.
I should add that a consequence of this bug is that the 1.1.0 driver cannot be compiled against the 2.6.18 kernel, as it fails with "error: too few arguments to function ‘ieee80211_tx_frame’". Kernel 2.6.18 uses ieee80211 1.1.13, though, not 1.1.14.
Created an attachment (id=937) [details] Defines IEEE80211_VERSION_CODE It seems that IEEE80211_API_VERSION must be set correctly before compiling ipw3945.c. Version 1.2.15 of the ieee80211 subsystem sets IEEE80211_VERSION_API (note the naming difference) to 2, and this should be the value of IEEE80211_API_VERSION; version 1.1.14 should use 2 too, and earlier versions use 1. Declaring IEEE80211_VERSION_CODE as KERNEL_VERSION(1,1,14) into ieee80211.h, and checking it into ipw3945.h, can define a proper IEEE80211_VERSION_API value
Created an attachment (id=938) [details] Defines IEEE80211_API_VERSION IEEE80211_API_VERSION is computed as follows: - if IEEE80211_VERSION_API is defined (ieee80211 v.1.2.15), its value is used for IEEE80211_API_VERSION; - if IEEE80211_VERSION_CODE is defined, and is less than KERNEL_VERSION(1,1,14), IEEE80211_API_VERSION is set to 1, else it is set to 2. - in all other cases, IEEE80211_API_VERSION is set to 1. This patch can cope with both older and newer versions of the ieee80211 subsystem. I successfully built the following kernels, using "make patch_kernel" for ieee80211, and "make add_radiotap" and "make patch_kernel" for ipw3945: - vanilla 2.6.18 kernel, ieee80211 v.1.1.14, ipw3945 v.1.1.0 - Debian's linux-source-2.6.18, ieee80211 v.1.2.15, ipw3945 v.1.1.0
I attached a patches for net/ieee80211.h (applies to ieee80211-1.1.14 only), and one for ipw3945.h (all versions) to compute IEEE80211_API_VERSION while compiling ipw3945 driver. The patches should make ipw3945 compile with all ieee80211 versions.
"I attached a patches for net/ieee80211.h (applies to ieee80211-1.1.14 only), and one for ipw3945.h (all versions) to compute IEEE80211_API_VERSION while compiling ipw3945 driver. The patches should make ipw3945 compile with all ieee80211 versions." Even with the patch to ipw3945, it still does not compile with the stock 2.6.18 kernel, which has ieee80211 version 1.1.13, or technically, "git-1.1.13". The warnings about IEEE80211_API_VERSION are fixed, but the "error: too few arguments to function ‘ieee80211_tx_frame’" remains.
"I successfully built the following kernels, using "make patch_kernel" for ieee80211, and "make add_radiotap" and "make patch_kernel" for ipw3945: - vanilla 2.6.18 kernel, ieee80211 v.1.1.14, ipw3945 v.1.1.0 - Debian's linux-source-2.6.18, ieee80211 v.1.2.15, ipw3945 v.1.1.0" A vanilla 2.6.18 kernel and ieee80211 v.1.2.15 appears to be another story. Doing the same steps as you, but enabling CONFIG_IPW3945_DEBUG, CONFIG_IEEE80211_DEBUG, CONFIG_IEEE80211_SOFTMAC_DEBUG, and CONFIG_IEEE80211_RADIOTAP, I get this error: CC [M] net/ieee80211/ieee80211_module.o net/ieee80211/ieee80211_module.c:52:20: error: compat.h: No such file or directo ry make[3]: *** [net/ieee80211/ieee80211_module.o] Error 1 make[2]: *** [net/ieee80211] Error 2 make[1]: *** [net] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.18' make: *** [stamp-build] Error 2
My compile problem was due to bug #1140 in ieee80211-1.2.15. I worked around it by manually copying compat.h to the location where ieee80211's "make patch_kernel" should have put it in the first place.
This bug is not fixed. ipw3945 doesn't compile on vanilla 2.6.18 which has ieee80211 version 1.1.13. With this not fixed, it will be difficult for me to regress bug #1112 Any deadline if you have ?
Although the bug was filed against version 1.1.14 of the ieee80211 subsystem, I am trying to find a smart way of reproducing the following matrix in ipw3945.[h|c]: ieee80211 version | *1.1.13 or less | 1.1.14 | 1.2.15 or more | ----------------------------------------------------------------- IEEE802_API_VERSION | 1 | 2 | 2 | So the ipw3945 driver should compile against any ieee80211 version.
(In reply to comment #17) > My compile problem was due to bug #1140 in ieee80211-1.2.15. I worked around it > by manually copying compat.h to the location where ieee80211's "make > patch_kernel" should have put it in the first place. http://ieee80211.sourceforge.net/patches/ieee80211-1.2.15-patch_kernel.patch
Created an attachment (id=943) [details] ipw3945 fix patch for compling on vanilla 2.6.18
mark as fixed
Alberto, could you please verify this bug against the latest release?
I verfied this bug by compiling ipw3945-1.2.0 against ieee80211-1.2.16.