| --- 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: |