aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/broadcom-wl/Makefile9
-rwxr-xr-xpackage/broadcom-wl/files/etc/init.d/wlunbind23
-rw-r--r--package/broadcom-wl/patches/002-ctype.patch30
3 files changed, 61 insertions, 1 deletions
diff --git a/package/broadcom-wl/Makefile b/package/broadcom-wl/Makefile
index 2d4aacf14e..ebf9b38618 100644
--- a/package/broadcom-wl/Makefile
+++ b/package/broadcom-wl/Makefile
@@ -126,7 +126,9 @@ define Build/Compile
$(PKG_BUILD_DIR)/nas_exe.o \
$(PKG_BUILD_DIR)/shared/libshared.a
- $(TARGET_CC) -o $(PKG_BUILD_DIR)/wl $(PKG_BUILD_DIR)/wl_exe.o
+ $(TARGET_CC) -o $(PKG_BUILD_DIR)/wl \
+ $(PKG_BUILD_DIR)/wl_exe.o \
+ $(PKG_BUILD_DIR)/shared/libshared.a
endef
define Build/InstallDev
@@ -140,6 +142,11 @@ define Package/wlc/install
$(INSTALL_BIN) $(PKG_BUILD_DIR)/wlc $(1)/sbin/
endef
+define Package/wlc/postinst
+#!/bin/sh
+[ -n "$${IPKG_INSTROOT}" ] || /etc/init.d/wlunbind enable || true
+endef
+
define Package/wl/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/wl $(1)/usr/sbin/
diff --git a/package/broadcom-wl/files/etc/init.d/wlunbind b/package/broadcom-wl/files/etc/init.d/wlunbind
new file mode 100755
index 0000000000..80a8f0e604
--- /dev/null
+++ b/package/broadcom-wl/files/etc/init.d/wlunbind
@@ -0,0 +1,23 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2010 OpenWrt.org
+
+START=09
+
+boot() {
+ local sysfs=/sys/bus/pci/drivers/b43-pci-bridge
+ if [ -d "$sysfs" ]; then
+ local lnk
+ for lnk in $sysfs/*; do
+ [ -h "$lnk" ] || continue
+ case "${lnk##*/}" in
+ *:*:*.*)
+ logger "Unbinding WL PCI device ${lnk##*/} from B43 SSB bridge"
+ echo -n "${lnk##*/}" > "$sysfs/unbind"
+ ;;
+ esac
+ done
+ fi
+}
+
+start() { :; }
+stop() { :; }
diff --git a/package/broadcom-wl/patches/002-ctype.patch b/package/broadcom-wl/patches/002-ctype.patch
new file mode 100644
index 0000000000..16d13df30c
--- /dev/null
+++ b/package/broadcom-wl/patches/002-ctype.patch
@@ -0,0 +1,30 @@
+--- a/shared/Makefile
++++ b/shared/Makefile
+@@ -19,7 +19,7 @@ LDFLAGS += -L.
+ AR=ar
+ RANLIB=ranlib
+
+-OBJS := shutils.o wl.o wl_linux.o linux_timer.o
++OBJS := shutils.o wl.o wl_linux.o linux_timer.o ctype.o
+ all: libshared.a
+
+ clean:
+--- /dev/null
++++ b/shared/ctype.c
+@@ -0,0 +1,16 @@
++#include <features.h>
++
++#ifndef __UCLIBC__
++extern void **__ctype_b_loc();
++extern void **__ctype_tolower_loc();
++
++void *__ctype_b;
++void *__ctype_tolower;
++
++static void init(void) __attribute__((constructor));
++static void init(void)
++{
++ __ctype_b = *__ctype_b_loc();
++ __ctype_tolower = *__ctype_tolower_loc();
++}
++#endif