Re: driverloader won't build under new Linux kernel 2.6.18

"Linuxant support (Jonathan)" <[email protected]> Tue, 03 Oct 2006 13:25:11 -0400
Newsgroups gmane.linux.kernel.driver-loader
Message-ID <[email protected]>
Hi,

the build error you have reported is a known issue on newer RHEL 4.x 
kernels, this have nothing to do with the 2.6.18 kernel. I have attached 
  a patch to this post that should solve the issue. It can be installed 
with the 'dldrconfig --patch <file.patch>' command in a root shell.

For the new issue with:

---
Unable to determine version of kernel source
directory /lib/modules/2.6.9-42.0.2.EL/build
---

it is a possible regression of the utsrelease patch that we will have to 
take a look at. Try without the utsrelease patch to see if there is a 
difference.

Regards,


Jonathan
Technical specialist / Linuxant
www.linuxant.com
[email protected]



Anne Racel wrote:
> I ran into a similar problem with the 2.6.9 kernel.  I tried, initially,
> to run 'dldrinstall.run' and received the following errors:
> 
> (cd /lib/modules/2.6.9-42.0.2.EL/build && make
> "DLDR_KERNELSRC=/lib/modules/2.6.9-42.0.2.EL/build"
> "M=/usr/lib/driverloader/modules" "CC=gcc" modules)
> make[1]: Entering directory `/usr/src/kernels/2.6.9-42.0.2.EL-i686'
>   CC [M]  /usr/lib/driverloader/modules/dldrmod.o
>   CC [M]  /usr/lib/driverloader/modules/dldrpci.o
>   CC [M]  /usr/lib/driverloader/modules/dldrusb.o
>   CC [M]  /usr/lib/driverloader/modules/osusb.o
>   CC [M]  /usr/lib/driverloader/modules/GPL/netndis.o
> /usr/lib/driverloader/modules/GPL/netndis.c:4791: error: unknown field
> `get_wireless_stats' specified in initializer
> /usr/lib/driverloader/modules/GPL/netndis.c:4791: warning:
> initialization makes
> integer from pointer without a cast
> /usr/lib/driverloader/modules/GPL/netndis.c:4791: error: initializer
> element is
> not computable at load time
> /usr/lib/driverloader/modules/GPL/netndis.c:4791: error: (near
> initialization for `netndis_handler_def.num_standard')
> /usr/lib/driverloader/modules/GPL/netndis.c: In function
> `alloc_netndisdev':
> /usr/lib/driverloader/modules/GPL/netndis.c:4821: warning: assignment
> discards qualifiers from pointer target type
> make[2]: *** [/usr/lib/driverloader/modules/GPL/netndis.o] Error 1
> make[1]: *** [_module_/usr/lib/driverloader/modules] Error 2
> make[1]: Leaving directory `/usr/src/kernels/2.6.9-42.0.2.EL-i686'
> make: *** [all] Error 2
> 
> 
> ===
> 
> So I manually downloaded the non-rpm version, applied the patches you
> included, and received the following error:
> 
> Unable to determine version of kernel source
> directory /lib/modules/2.6.9-42.0.2.EL/build
> 
> 
> 
> On Tue, 2006-10-03 at 10:46 -0400, Linuxant support (Jonathan) wrote:
>> Hi,
>>
>> DriverLoader 2.34 does not support the 2.6.18 kernel and a new version 
>> of DriverLoader will be released in the near future to add support for 
>> this kernel.
>>
>> In the meantime, you can patch DriverLoader 2.34 with the patches I have 
>> attached to this post. These patches should fix all the known problems 
>> of DriverLoader 2.34 for the 2.6.18 kernel, including the build problem 
>> described in your post. Each patch can be installed with the 'dldrconfig 
>> --patch <file.patch>' command in a root shell.
>>
>> Regards,
>>
>>
>> Jonathan
>> Technical specialist / Linuxant
>> www.linuxant.com
>> [email protected]
>>
>>
>>
>> Marty Huntzberry wrote:
>>> Hi!  I've been using the driverloader software (2.34) for my Belkin wireless G card for about 6 months now with no problems.  I have it installed in
>>> a PCI slot on a Pentium PC using Slackware Linux 10.2.  I have re-built the kernel several times on that pc and then built driverloader and gotten it
>>> configured without a problem...till now.  Every other 2.6.x kernel was in the format 2.6.x.x and now it's 2.6.x.  I'm not sure if that's why it won't
>>> build a module now.  Here's what I did and the error:
>>>
>>> Re-booted into kernel 2.6.18 and then entered my newly extracted driverloader-2.34 directory and typed make install.  All went fine and then this:
>>>
>>> To complete the installation and configuration of your device,
>>> please run "dldrconfig" (or "/usr/sbin/dldrconfig")
>>> root@LinuxHippy:/home/huntz/linuxant/driverloader-2.34-kernel-2.6.18# dldrconfig
>>> Linuxant DriverLoader for Wireless LAN devices, version 2.34
>>>
>>> No pre-built modules for: Slackware-Slackware linux-2.6.18 i586
>>>
>>> Trying to automatically build the driver modules...
>>> (this requires a C compiler and proper kernel sources to be installed)
>>>
>>> Where is the linux source build directory that matches your running kernel?
>>> [/lib/modules/2.6.18/build]
>>>
>>> WARNING: the kernel version () defined in
>>> /lib/modules/2.6.18/build/include/linux/version.h
>>> does not match the currently running kernel (2.6.18)
>>> The cause of this problem is an incorrect kernel source path.
>>> Please check that /lib/modules/2.6.18/build points to the right tree.
>>> The cause of this is usually a missing or unconfigured
>>> kernel source tree (and sometimes an incorrect directory or symbolic link).
>>>
>>> However, proper /boot/config-2.6.18 was found.
>>> Would you like to try using it (in a temporary kernel tree)? [yes]
>>>
>>> Building modules for kernel , using source directory
>>> /usr/src/linux-2.6.18-dldrtmp2463. Please wait...
>>>
>>> ERROR: Module build failed!
>>> Please examine the log file "/var/run/dldrconfig-buildlog.txt" to determine why.
>>>
>>> That txt file shows this:
>>>
>>> (cd /usr/src/linux-2.6.18-dldrtmp2463 && make "DLDR_KERNELSRC=/usr/src/linux-2.6.18-dldrtmp2463" "M=/usr/lib/driverloader/modules" "CC=gcc" clean)
>>> make[1]: Entering directory `/usr/src/linux-2.6.18-dldrtmp2463'
>>> make[1]: Leaving directory `/usr/src/linux-2.6.18-dldrtmp2463'
>>> rm -rf *.o GPL/*.o *.ko GPL/*.ko *.mod.c GPL/*.mod.c .*.cmd
>>> GPL/.*.cmd .tmp_versions .tmp_versions  /usr/src/linux-2.6.18-dldrtmp2463/.tmp_versions/driverloader.mod Unable to determine version of kernel source
>>> directory /usr/src/linux-2.6.18-dldrtmp2463 make: *** [check_kernelver] Error 1
>>>
>>>
>>> Any ideas?
>>>
>>> Marty
>>> _______________________________________________
>>> driverloader mailing list
>>> [email protected]
>>> https://www.linuxant.com/mailman/listinfo/driverloader
>> _______________________________________________
>> driverloader mailing list
>> [email protected]
>> https://www.linuxant.com/mailman/listinfo/driverloader
> 
> _______________________________________________
> driverloader mailing list
> [email protected]
> https://www.linuxant.com/mailman/listinfo/driverloader

_______________________________________________
driverloader mailing list
[email protected]
https://www.linuxant.com/mailman/listinfo/driverloader
dldr-2.34-get_wireless_stats.patch (text/x-patch, 1.8 KB)
diff -urN driverloader-2.34/modules/GPL/netndis.c driverloader-2.34-get_wireless_stats/modules/GPL/netndis.c
--- driverloader-2.34/modules/GPL/netndis.c	2006-05-18 19:12:37.000000000 -0400
+++ driverloader-2.34-get_wireless_stats/modules/GPL/netndis.c	2006-09-01 20:50:38.000000000 -0400
@@ -4788,7 +4788,9 @@
 
 static const struct iw_handler_def netndis_handler_def =
 {
+#if FOUND_IW_HANDLER_WIRELESS_STATS
 	.get_wireless_stats = netndis_get_wireless_stats,
+#endif
 
 	.num_standard = sizeof(netndis_handler) / sizeof(netndis_handler[0]),
 	.standard = (iw_handler *)netndis_handler,
@@ -4819,9 +4821,8 @@
 	dev->get_stats = netndis_get_stats;
 #if IW_HANDLER_VERSION >= 6
 	dev->wireless_handlers = &netndis_handler_def;
-#else
-	dev->get_wireless_stats = netndis_get_wireless_stats;
 #endif
+	dev->get_wireless_stats = netndis_get_wireless_stats;
 	dev->do_ioctl = netndis_ioctl;
 	dev->change_mtu = netndis_change_mtu;
 	dev->set_multicast_list = netndis_set_multicast_list;
diff -urN driverloader-2.34/modules/Makefile driverloader-2.34-get_wireless_stats/modules/Makefile
--- driverloader-2.34/modules/Makefile	2006-04-19 15:09:07.000000000 -0400
+++ driverloader-2.34-get_wireless_stats/modules/Makefile	2006-09-01 20:30:20.000000000 -0400
@@ -101,6 +101,9 @@
 FOUND_MODULE_PARAM :=  $(shell grep -q 'module_param' ${REAL_KERNELSRC}/include/linux/moduleparam.h 2>/dev/null && echo -DFOUND_MODULE_PARAM)
 CFLAGS+= $(FOUND_MODULE_PARAM)
 
+FOUND_IW_HANDLER_WIRELESS_STATS := $(shell gcc -E ${REAL_KERNELSRC}/include/net/iw_handler.h | grep -q 'get_wireless_stats' 2>/dev/null && echo -DFOUND_IW_HANDLER_WIRELESS_STATS)
+CFLAGS+= $(FOUND_IW_HANDLER_WIRELESS_STATS)
+
 CFLAGS+= $(if $(filter 2.6.15-1.2054_FC5%, $(KERNELVER)), -DFOUND_EXPORT_GPL_PRINT_TAINTED,)
 
 KBUILD_SUPPORTED := $(shell test -e ${DLDR_KERNELSRC}/scripts/kconfig && echo yes || echo no)