aboutsummaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@openwrt.org>2012-11-25 20:14:34 +0000
committerHauke Mehrtens <hauke@openwrt.org>2012-11-25 20:14:34 +0000
commita66df310fb41babfcba49e9f1d55bd96f1d18550 (patch)
tree4f1a265aa4dccb1f16f288766435bf5dd4c9d488 /package
parente849634d70faed22dda55a5d0807dcd793b61fda (diff)
downloadupstream-a66df310fb41babfcba49e9f1d55bd96f1d18550.tar.gz
upstream-a66df310fb41babfcba49e9f1d55bd96f1d18550.tar.bz2
upstream-a66df310fb41babfcba49e9f1d55bd96f1d18550.zip
broadcom-wl: fix two problems when more then one wifi card is available.
* The device should get a unique name at the beginning and not wl%d * load the nvram just one time into the own buffer also when there is more than one device. Backport of r34381. git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@34382 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r--package/broadcom-wl/patches/100-fix_nvram_two_devices.patch32
-rw-r--r--package/broadcom-wl/patches/110-add_number_to_dev_name.patch11
2 files changed, 43 insertions, 0 deletions
diff --git a/package/broadcom-wl/patches/100-fix_nvram_two_devices.patch b/package/broadcom-wl/patches/100-fix_nvram_two_devices.patch
new file mode 100644
index 0000000000..5650862f83
--- /dev/null
+++ b/package/broadcom-wl/patches/100-fix_nvram_two_devices.patch
@@ -0,0 +1,32 @@
+--- a/driver/nvram_stub.c
++++ b/driver/nvram_stub.c
+@@ -22,6 +22,7 @@ typedef struct _vars {
+ #define VARS_T_OH sizeof(vars_t)
+
+ static vars_t *vars = NULL;
++static int nvram_init_done = 0;
+ extern char *nvram_buf[];
+
+ int
+@@ -33,6 +34,10 @@ BCMATTACHFN(nvram_init)(void *si)
+ uint nvs, bufsz;
+ vars_t *new;
+
++ nvram_init_done++;
++ if (nvram_init_done != 1)
++ return 0;
++
+ osh = si_osh(sih);
+
+ nvs = R_REG(osh, &nvh->len) - sizeof(struct nvram_header);
+@@ -79,6 +84,10 @@ BCMATTACHFN(nvram_exit)(void *si)
+ vars_t *this, *next;
+ si_t *sih;
+
++ nvram_init_done--;
++ if (nvram_init_done != 0)
++ return 0;
++
+ sih = (si_t *)si;
+ this = vars;
+ while (this) {
diff --git a/package/broadcom-wl/patches/110-add_number_to_dev_name.patch b/package/broadcom-wl/patches/110-add_number_to_dev_name.patch
new file mode 100644
index 0000000000..4f0ed01bd8
--- /dev/null
+++ b/package/broadcom-wl/patches/110-add_number_to_dev_name.patch
@@ -0,0 +1,11 @@
+--- a/driver/wl_linux.c
++++ b/driver/wl_linux.c
+@@ -1410,7 +1410,7 @@ wl_alloc_if(wl_info_t *wl, int iftype, u
+ dev = alloc_etherdev(sizeof(wl_if_t));
+ wlif = netdev_priv(dev);
+ bzero(wlif, sizeof(wl_if_t));
+- strncpy(dev->name, name, IFNAMSIZ);
++ snprintf(dev->name, IFNAMSIZ, name, subunit);
+
+ wlif->type = iftype;
+ wlif->dev = dev;