Bug 655 - WPA disabled because of missing CONFIG variables (recursive make)
: WPA disabled because of missing CONFIG variables (recursive make)
Status: VERIFIED FIXED
: IPW2100
Install
: 1.1.1
: All All
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency treegraph
 
Reported: 2005-05-06 23:24 by
Modified: 2005-07-20 23:41 (History)


Attachments
Makefile patch to add export (287 bytes, patch)
2005-05-06 23:25, Andrew Gilmore
Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2005-05-06 23:24:32
CONFIG_* variables set in ipw2100 Makefile when run as external build do not
make it into the environment for the make that actually does the compilations,
so the driver is compiled as if those variables were not set.

One way to fix this is to add 'export' on a line by itself to the ipw2100
Makefile. I'm not aware of all the drawbacks associated with such a change, but
I know that doing so fixed the problem.

I also posted this to the mailing list for searches, but I thought a bug would
be useful for tracking.
I'll attach the patch here as well, even though it is a one-liner.
------- Comment #1 From 2005-05-06 23:25:46 -------
Created an attachment (id=367) [details]
Makefile patch to add export

One liner to tell make to 'export' all variables defined to any sub-makes.
------- Comment #2 From 2005-05-06 23:28:38 -------
I'll add the information from the mailing list post.

 [agilmore@tromps ipw2100-1.1.0]$ make V=1
 make -C /lib/modules/2.6.11-1.14_FC3.root_cubbi1_swsusp2/build
 SUBDIRS=/home/agilmore/src/wpa/ipw2100-1.1.0
 MODVERDIR=/home/agilmore/src/wpa/ipw2100-1.1.0 modules
 make[1]: Entering directory
 `/lib/modules/2.6.11-1.14_FC3.root_cubbi1_swsusp2/build"
 mkdir -p /home/agilmore/src/wpa/ipw2100-1.1.0
 make -f scripts/Makefile.build obj=/home/agilmore/src/wpa/ipw2100-1.1.0
   gcc -Wp,-MD,/home/agilmore/src/wpa/ipw2100-1.1.0/.ipw2100.o.d -nostdinc
 -isystem /usr/lib/gcc/i386-redhat-linux/3.4.3/include -D__KERNEL__ -Iinclude
 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common
 -ffreestanding -O2     -fomit-frame-pointer -g -pipe -msoft-float -m32
 -fno-builtin-sprintf -fno-builtin-log2 -fno-builtin-puts
 -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=i686 -mtune=pentium4
 -mregparm=3 -Iinclude/asm-i386/mach-default -Wdeclaration-after-statement
 -I/lib/modules/2.6.11-1.14_FC3.root_cubbi1_swsusp2/build/drivers/net/wireless
 -DCONFIG_PM  -DMODULE -DKBUILD_BASENAME=ipw2100 -DKBUILD_MODNAME=ipw2100
 -c -o
 /home/agilmore/src/wpa/ipw2100-1.1.0/.tmp_ipw2100.o
 /home/agilmore/src/wpa/ipw2100-1.1.0/ipw2100.c
 
 Note the absence of any CONFIG_IPW* and CONFIG_IEEE* defines on the gcc
 command.
 These are defined in the ipw2100 Makefile, but don"t make it to the gcc
 command,
 and WPA is not compiled in:
 
 [agilmore@tromps ipw2100-1.1.0]$ nm ipw2100.o |grep wpa
 00006515 t ipw2100_set_wpa_ie
 [agilmore@tromps ipw2100-1.1.0]$
 
And after the patch: 

 [agilmore@tromps ipw2100-1.1.0]$ make V=1
 make -C /lib/modules/2.6.11-1.14_FC3.root_cubbi1_swsusp2/build
 SUBDIRS=/home/agilmore/src/wpa/ipw2100-1.1.0
 MODVERDIR=/home/agilmore/src/wpa/ipw2100-1.1.0 modules
 make[1]: Entering directory
 `/lib/modules/2.6.11-1.14_FC3.root_cubbi1_swsusp2/build"
 mkdir -p /home/agilmore/src/wpa/ipw2100-1.1.0
 make -f scripts/Makefile.build obj=/home/agilmore/src/wpa/ipw2100-1.1.0
   gcc -Wp,-MD,/home/agilmore/src/wpa/ipw2100-1.1.0/.ipw2100.o.d -nostdinc
 -isystem /usr/lib/gcc/i386-redhat-linux/3.4.3/include -D__KERNEL__ -Iinclude
 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common
 -ffreestanding -O2     -fomit-frame-pointer -g -pipe -msoft-float -m32
 -fno-builtin-sprintf -fno-builtin-log2 -fno-builtin-puts
 -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=i686 -mtune=pentium4
 -mregparm=3 -Iinclude/asm-i386/mach-default -Wdeclaration-after-statement
 -I/drivers/net/wireless -g -Wa,-adhlms=modules.lst
 -I/lib/modules/2.6.11-1.14_FC3.root_cubbi1_swsusp2/build/drivers/net/wireless
 -g
 -Wa,-adhlms=/home/agilmore/src/wpa/ipw2100-1.1.0/ipw2100.o.lst -DCONFIG_PM
 -DCONFIG_IPW_DEBUG=y -DCONFIG_IPW2100_MONITOR=y -DCONFIG_IEEE80211_DEBUG=y
 -DCONFIG_IEEE80211_CRYPT=m -DCONFIG_IEEE80211_WPA=m
 -DCONFIG_IEEE80211_CRYPT_TKIP=m -DCONFIG_IEEE80211_CRYPT_CCMP=m  -DMODULE
 -DKBUILD_BASENAME=ipw2100 -DKBUILD_MODNAME=ipw2100 -c -o
 /home/agilmore/src/wpa/ipw2100-1.1.0/.tmp_ipw2100.o
 /home/agilmore/src/wpa/ipw2100-1.1.0/ipw2100.c
 
 Note all the goodness of the CONFIG* defines there, and joy, we have WPA:
 
 [agilmore@tromps ipw2100-1.1.0]$ nm ipw2100.o |grep wpa
 000065b2 t ipw2100_set_wpa_ie
 00007798 T ipw2100_wpa_assoc_frame
 000075c2 t ipw2100_wpa_enable
 00007754 t ipw2100_wpa_mlme
 0000762c t ipw2100_wpa_set_auth_algs
 000078c4 t ipw2100_wpa_set_encryption
 000076a5 t ipw2100_wpa_set_param
 000077ef t ipw2100_wpa_set_wpa_ie
 00007cad t ipw2100_wpa_supplicant
 [agilmore@tromps ipw2100-1.1.0]$
 
Good luck, and thanks
------- Comment #3 From 2005-05-12 16:43:12 -------
Assigning to Yi. Please set target to 1.1.1 when patch is applied.

Capturing the latest discussion on the Mailing list regarding this bug:
- This bug is caused by old #defines in the kernel build tree, and therefore 
the symbols in ipw Makefile don't work.
- The Makefile will need to check against CONFIG_IEEE80211_WPA_MODULE as 
follows:
    #ifdef CONFIG_IEEE80211_WPA_MODULE
    #ifndef CONFIG_IEEE80211_WPA
    #define CONFIG_IEEE80211_WPA
    #endif
    #endif
------- Comment #4 From 2005-05-26 23:44:45 -------
patch like #593 checked in for target 1.1.1
------- Comment #5 From 2005-07-20 23:41:08 -------
Verified in 1.1.2.