[solved] broadcom wl.ko doesnt build with linux-3.4

Started by ralul, 2012/06/01, 14:48:54

Previous topic - Next topic

ralul

Linx-3.4 headers miss a system.h for building a proprietary broadcom-sta wl.ko module

dkms doesnt recognize architecture. I edited the Makefile to run compilation by hand this command:

KVER=3.4-0.towo.4-siduction-amd64 \
KDIR=/lib/modules/3.4-0.towo.4-siduction-amd64/build\ KERNELRELEASE=3.4-0.towo.4-siduction-amd64 make all

/var/lib/dkms/broadcom-sta/5.100.82.112/build/src/wl/sys/wl_linux.c:43:24: fatal error: asm/system.h: Datei oder Verzeichnis nicht gefunden

Also openSUSE doesn't build wl.ko
Both build Nvidia.
Both linux-3.4 header directories
miss arch/x86/system.h
but arch/arm/system.h exists for SUSE headers

PS: I need to use the proprietary broadcom-sta,
because of my very special Mac Mini Hardware:
03:00.0 Network controller [0280]: Broadcom
Corporation BCM4321 802.11a/b/g/n [14e4:4328](rev 05)

I will have to use old linux kernels all my life :(
experiencing siduction runs better than my gentoo makes me know I know nothing

ralul

This surely is not a bug of siduction but upstream!
Posting here to remind people having the same hardware ...

Found a patch to just let system.h go away:
--- a/amd64/src/wl/sys/wl_linux.c
+++ b/amd64/src/wl/sys/wl_linux.c
@@ -40,7 +40,9 @@
#include <linux>
#define WLC_MAXBSSCFG          1

+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
#include <asm>
+#endif
#include <asm>
#include <asm>
#include <asm>
--- a/i386/src/wl/sys/wl_linux.c
+++ b/i386/src/wl/sys/wl_linux.c
@@ -40,7 +40,9 @@
#include <linux>
#define WLC_MAXBSSCFG          1

+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
#include <asm>
+#endif
#include <asm>
#include <asm>
#include <asm>
experiencing siduction runs better than my gentoo makes me know I know nothing

towo

I have uploaded a fixed broadcom-sta to our fixes repo.
Tested only over module-assistant, so i can't say, if dkms is also working.
Ich gehe nicht zum Karneval, ich verleihe nur manchmal mein Gesicht.

ralul

Yes that is another problem - not finding the right architecture. But it is a dkms problem! But I wonder why nvidia works? Perhaps the second call to dkms gets an arch parameter lost ?
experiencing siduction runs better than my gentoo makes me know I know nothing

towo

Finding the right ARCH should work with the code in the Makefile.
The code works without problem by hand:

towo:Defiant> egrep 'CONFIG_X86_(32|64)=y' /lib/modules/3.4-0.towo.4-siduction-amd64/build/.config | cut -d= -f1
CONFIG_X86_64
Ich gehe nicht zum Karneval, ich verleihe nur manchmal mein Gesicht.

ralul

In the original Makefile of debian package broadcom-sta-dkms:
KARCH := $(shell egrep 'CONFIG_X86_(32|64)=y' $(KDIR)/.config 2>/dev/null| cut -d= -f1)
Perhaps KDIR is not defined...

Towo, very thanx for your Help!
experiencing siduction runs better than my gentoo makes me know I know nothing

towo

Ideed, it is:

ifeq ($(KVER),)
<------>KVER = $(shell uname -r)
endif
KDIR     = /lib/modules/$(KVER)/build
PWD      = $(shell pwd)
Ich gehe nicht zum Karneval, ich verleihe nur manchmal mein Gesicht.

ralul

There is an open Bug about this:
http://bugs.debian.org/677193  
broadcom-sta-dkms : DKMS doesn't work with 3.4 kernel

Our fix for broadcom-sta-5.100.82.112 /src/wl/sys/wl_linux.c#if LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)
#include <asm>
#else
#include <asm>
#endif
has no spaces - this is better functioning:#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)Obviously I am the only user who needs to use proprietary broadcom and stumbles upon.
experiencing siduction runs better than my gentoo makes me know I know nothing