aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/utils/iwinfo/src/iwinfo_wl.c
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@openwrt.org>2013-11-11 21:54:25 +0000
committerHauke Mehrtens <hauke@openwrt.org>2013-11-11 21:54:25 +0000
commit254d8e67c7b46a9f23bead2d2a9fde227b5ce070 (patch)
treeaf5f98daafddf63895c667655702d9490379cb72 /package/network/utils/iwinfo/src/iwinfo_wl.c
parent22e6165b04df722858a81a9fbb5893c0ce79506e (diff)
downloadmaster-187ad058-254d8e67c7b46a9f23bead2d2a9fde227b5ce070.tar.gz
master-187ad058-254d8e67c7b46a9f23bead2d2a9fde227b5ce070.tar.bz2
master-187ad058-254d8e67c7b46a9f23bead2d2a9fde227b5ce070.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> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38745 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/network/utils/iwinfo/src/iwinfo_wl.c')
-rw-r--r--package/network/utils/iwinfo/src/iwinfo_wl.c41
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)