b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | --- a/driver/wl_iw.c |
| 2 | +++ b/driver/wl_iw.c |
| 3 | @@ -314,7 +314,7 @@ wl_iw_get_name( |
| 4 | ) |
| 5 | { |
| 6 | int phytype, err; |
| 7 | - uint band[3]; |
| 8 | + uint i, band[3], bands; |
| 9 | char cap[5]; |
| 10 | |
| 11 | WL_TRACE(("%s: SIOCGIWNAME\n", dev->name)); |
| 12 | @@ -335,16 +335,20 @@ wl_iw_get_name( |
| 13 | break; |
| 14 | case WLC_PHY_TYPE_LP: |
| 15 | case WLC_PHY_TYPE_G: |
| 16 | - if (band[0] >= 2) |
| 17 | - strcpy(cap, "abg"); |
| 18 | - else |
| 19 | - strcpy(cap, "bg"); |
| 20 | - break; |
| 21 | case WLC_PHY_TYPE_N: |
| 22 | - if (band[0] >= 2) |
| 23 | - strcpy(cap, "abgn"); |
| 24 | - else |
| 25 | - strcpy(cap, "bgn"); |
| 26 | + bands = 0; |
| 27 | + for (i = 1; i <= band[0]; i++) { |
| 28 | + bands |= dtoh32(band[i]); |
| 29 | + } |
| 30 | + strcpy(cap, ""); |
| 31 | + if (bands & WLC_BAND_5G) |
| 32 | + strcat(cap, "a"); |
| 33 | + if (bands & WLC_BAND_2G) |
| 34 | + strcat(cap, "bg"); |
| 35 | + if (phytype == WLC_PHY_TYPE_N) |
| 36 | + strcat(cap, "n"); |
| 37 | + break; |
| 38 | + default: |
| 39 | break; |
| 40 | } |
| 41 | done: |