Browse Source

broadcom-wl: fix band reporting

Modify the band reporting for broadcom devices to correctly report
HW capability.  Currently, 802.11na devices report "bgn"; but should be
reporting "an".

Signed-off-by: Nathan Hintz <[email protected]>

SVN-Revision: 38749
Hauke Mehrtens 12 years ago
parent
commit
40e8eb2dda
1 changed files with 41 additions and 0 deletions
  1. 41 0
      package/kernel/broadcom-wl/patches/014-fix-band-reporting.patch

+ 41 - 0
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: