OpenWrt
/branches/gl-inet/package/kernel/broadcom-wl/patches/014-fix-band-reporting.patch |
@@ -0,0 +1,41 @@ |
--- 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: |