diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2013-11-11 21:54:25 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2013-11-11 21:54:25 +0000 |
commit | e3a5401fb20a17ea3749dedac2219e8f0ca44a4b (patch) | |
tree | bb72b2c973aea04729f73a19f3e26faf45b92bac /package/network/utils/iwinfo/src/iwinfo_wl.c | |
parent | 091e3fde4c2fb8d230c2ff2cf1e61ca4a1d03d3d (diff) | |
download | upstream-e3a5401fb20a17ea3749dedac2219e8f0ca44a4b.tar.gz upstream-e3a5401fb20a17ea3749dedac2219e8f0ca44a4b.tar.bz2 upstream-e3a5401fb20a17ea3749dedac2219e8f0ca44a4b.zip |
iwinfo: fix hwmodelist reporting for broadcom wl
Modify the hwmodelist reporting for broadcom devices to include
proper reporting of 802.11n support.
Signed-off-by: Nathan Hintz <nlhintz@hotmail.com>
SVN-Revision: 38745
Diffstat (limited to 'package/network/utils/iwinfo/src/iwinfo_wl.c')
-rw-r--r-- | package/network/utils/iwinfo/src/iwinfo_wl.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/package/network/utils/iwinfo/src/iwinfo_wl.c b/package/network/utils/iwinfo/src/iwinfo_wl.c index 0a1439bb89..f5f0d4be78 100644 --- a/package/network/utils/iwinfo/src/iwinfo_wl.c +++ b/package/network/utils/iwinfo/src/iwinfo_wl.c @@ -583,7 +583,46 @@ int wl_get_countrylist(const char *ifname, char *buf, int *len) int wl_get_hwmodelist(const char *ifname, int *buf) { - return wext_get_hwmodelist(ifname, buf); + int phytype; + uint i, band[WLC_BAND_ALL], bands; + + if (!wl_ioctl(ifname, WLC_GET_PHYTYPE, &phytype, sizeof(phytype)) && + !wl_ioctl(ifname, WLC_GET_BANDLIST, band, sizeof(band))) + { + switch (phytype) + { + case WLC_PHY_TYPE_A: + *buf = IWINFO_80211_A; + break; + case WLC_PHY_TYPE_B: + *buf = IWINFO_80211_B; + break; + case WLC_PHY_TYPE_LP: + case WLC_PHY_TYPE_G: + case WLC_PHY_TYPE_N: + bands = 0; + for (i = 1; i <= band[0]; i++) + { + bands |= band[i]; + } + *buf = 0; + if (bands & WLC_BAND_5G) + *buf |= IWINFO_80211_A; + if (bands & WLC_BAND_2G) + { + *buf |= IWINFO_80211_B; + *buf |= IWINFO_80211_G; + } + if (phytype == WLC_PHY_TYPE_N) + *buf |= IWINFO_80211_N; + break; + default: + return -1; + break; + } + return 0; + } + return -1; } int wl_get_mbssid_support(const char *ifname, int *buf) |