summaryrefslogtreecommitdiff
path: root/package/kernel/broadcom-wl
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/broadcom-wl')
-rw-r--r--package/kernel/broadcom-wl/patches/014-fix-band-reporting.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/package/kernel/broadcom-wl/patches/014-fix-band-reporting.patch b/package/kernel/broadcom-wl/patches/014-fix-band-reporting.patch
new file mode 100644
index 0000000..f1305a4
--- /dev/null
+++ b/package/kernel/broadcom-wl/patches/014-fix-band-reporting.patch
@@ -0,0 +1,41 @@
+--- a/driver/wl_iw.c
++++ b/driver/wl_iw.c
+@@ -314,7 +314,7 @@
+ )
+ {
+ int phytype, err;
+- uint band[3];
++ uint i, band[3], bands;
+ char cap[5];
+
+ WL_TRACE(("%s: SIOCGIWNAME\n", dev->name));
+@@ -335,16 +335,20 @@
+ break;
+ case WLC_PHY_TYPE_LP:
+ case WLC_PHY_TYPE_G:
+- if (band[0] >= 2)
+- strcpy(cap, "abg");
+- else
+- strcpy(cap, "bg");
+- break;
+ case WLC_PHY_TYPE_N:
+- if (band[0] >= 2)
+- strcpy(cap, "abgn");
+- else
+- strcpy(cap, "bgn");
++ bands = 0;
++ for (i = 1; i <= band[0]; i++) {
++ bands |= dtoh32(band[i]);
++ }
++ strcpy(cap, "");
++ if (bands & WLC_BAND_5G)
++ strcat(cap, "a");
++ if (bands & WLC_BAND_2G)
++ strcat(cap, "bg");
++ if (phytype == WLC_PHY_TYPE_N)
++ strcat(cap, "n");
++ break;
++ default:
+ break;
+ }
+ done: