OpenWrt – Rev 1

Subversion Repositories:
Rev:
--- 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: