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
This commit is contained in:
parent
091e3fde4c
commit
e3a5401fb2
2 changed files with 59 additions and 5 deletions
|
@ -26,7 +26,7 @@
|
||||||
#define WLC_IOCTL_MAGIC 0x14e46c77
|
#define WLC_IOCTL_MAGIC 0x14e46c77
|
||||||
#define WLC_IOCTL_MAXLEN 8192
|
#define WLC_IOCTL_MAXLEN 8192
|
||||||
|
|
||||||
#define WLC_CNTRY_BUF_SZ 4
|
#define WLC_CNTRY_BUF_SZ 4
|
||||||
|
|
||||||
#define WLC_GET_MAGIC 0
|
#define WLC_GET_MAGIC 0
|
||||||
#define WLC_GET_RATE 12
|
#define WLC_GET_RATE 12
|
||||||
|
@ -35,18 +35,30 @@
|
||||||
#define WLC_GET_BSSID 23
|
#define WLC_GET_BSSID 23
|
||||||
#define WLC_GET_SSID 25
|
#define WLC_GET_SSID 25
|
||||||
#define WLC_GET_CHANNEL 29
|
#define WLC_GET_CHANNEL 29
|
||||||
|
#define WLC_GET_PHYTYPE 39
|
||||||
#define WLC_GET_PASSIVE 48
|
#define WLC_GET_PASSIVE 48
|
||||||
#define WLC_GET_COUNTRY 83
|
#define WLC_GET_COUNTRY 83
|
||||||
#define WLC_GET_REVINFO 98
|
#define WLC_GET_REVINFO 98
|
||||||
#define WLC_GET_AP 117
|
#define WLC_GET_AP 117
|
||||||
#define WLC_GET_RSSI 127
|
#define WLC_GET_RSSI 127
|
||||||
#define WLC_GET_WSEC 133
|
#define WLC_GET_WSEC 133
|
||||||
#define WLC_GET_PHY_NOISE 135
|
#define WLC_GET_PHY_NOISE 135
|
||||||
#define WLC_GET_BSS_INFO 136
|
#define WLC_GET_BSS_INFO 136
|
||||||
|
#define WLC_GET_BANDLIST 140
|
||||||
#define WLC_GET_ASSOCLIST 159
|
#define WLC_GET_ASSOCLIST 159
|
||||||
#define WLC_GET_WPA_AUTH 164
|
#define WLC_GET_WPA_AUTH 164
|
||||||
#define WLC_GET_COUNTRY_LIST 261
|
#define WLC_GET_COUNTRY_LIST 261
|
||||||
#define WLC_GET_VAR 262
|
#define WLC_GET_VAR 262
|
||||||
|
|
||||||
|
#define WLC_PHY_TYPE_A 0
|
||||||
|
#define WLC_PHY_TYPE_B 1
|
||||||
|
#define WLC_PHY_TYPE_G 2
|
||||||
|
#define WLC_PHY_TYPE_N 4
|
||||||
|
#define WLC_PHY_TYPE_LP 5
|
||||||
|
|
||||||
|
#define WLC_BAND_5G 1
|
||||||
|
#define WLC_BAND_2G 2
|
||||||
|
#define WLC_BAND_ALL 3
|
||||||
|
|
||||||
|
|
||||||
struct wl_ether_addr {
|
struct wl_ether_addr {
|
||||||
|
@ -117,6 +129,9 @@ typedef struct wlc_rev_info {
|
||||||
uint ucoderev; /* microcode version */
|
uint ucoderev; /* microcode version */
|
||||||
uint bus; /* bus type */
|
uint bus; /* bus type */
|
||||||
uint chipnum; /* chip number */
|
uint chipnum; /* chip number */
|
||||||
|
uint phytype; /* phy type */
|
||||||
|
uint phyrev; /* phy revision */
|
||||||
|
uint anarev; /* anacore rev */
|
||||||
} wlc_rev_info_t;
|
} wlc_rev_info_t;
|
||||||
|
|
||||||
typedef struct wl_country_list {
|
typedef struct wl_country_list {
|
||||||
|
|
|
@ -583,7 +583,46 @@ int wl_get_countrylist(const char *ifname, char *buf, int *len)
|
||||||
|
|
||||||
int wl_get_hwmodelist(const char *ifname, int *buf)
|
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)
|
int wl_get_mbssid_support(const char *ifname, int *buf)
|
||||||
|
|
Loading…
Reference in a new issue