42 lines
		
	
	
		
			822 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			822 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/driver/wl_iw.c
 | 
						|
+++ b/driver/wl_iw.c
 | 
						|
@@ -314,7 +314,7 @@ wl_iw_get_name(
 | 
						|
 )
 | 
						|
 {
 | 
						|
 	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 @@ wl_iw_get_name(
 | 
						|
 			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:
 |