summaryrefslogtreecommitdiff
path: root/package/kernel/broadcom-wl/patches/014-fix-band-reporting.patch
blob: f1305a45d2ac65f448f958099428b08f4d663a71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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: