rndis_wlan: convert get range to cfg80211
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>
Thu, 26 Mar 2009 21:40:23 +0000 (23:40 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 22 Apr 2009 20:54:36 +0000 (16:54 -0400)
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rndis_wlan.c

index 9e7956d9c6be783544638fcda0fbec59c31c2115..4252903cf89a47cf10468dc55c41e0d6c9c192e3 100644 (file)
@@ -1176,113 +1176,6 @@ static int rndis_iw_commit(struct net_device *dev,
 }
 
 
-static int rndis_iw_get_range(struct net_device *dev,
-    struct iw_request_info *info, union iwreq_data *wrqu, char *extra)
-{
-       struct iw_range *range = (struct iw_range *)extra;
-       struct usbnet *usbdev = netdev_priv(dev);
-       struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
-       int len, ret, i, j, num, has_80211g_rates;
-       u8 rates[8];
-       __le32 tx_power;
-
-       devdbg(usbdev, "SIOCGIWRANGE");
-
-       /* clear iw_range struct */
-       memset(range, 0, sizeof(*range));
-       wrqu->data.length = sizeof(*range);
-
-       range->txpower_capa = IW_TXPOW_MWATT;
-       range->num_txpower = 1;
-       if (priv->caps & CAP_SUPPORT_TXPOWER) {
-               len = sizeof(tx_power);
-               ret = rndis_query_oid(usbdev, OID_802_11_TX_POWER_LEVEL,
-                                               &tx_power, &len);
-               if (ret == 0 && le32_to_cpu(tx_power) != 0xFF)
-                       range->txpower[0] = le32_to_cpu(tx_power);
-               else
-                       range->txpower[0] = get_bcm4320_power(priv);
-       } else
-               range->txpower[0] = get_bcm4320_power(priv);
-
-       len = sizeof(rates);
-       ret = rndis_query_oid(usbdev, OID_802_11_SUPPORTED_RATES, &rates,
-                                                               &len);
-       has_80211g_rates = 0;
-       if (ret == 0) {
-               j = 0;
-               for (i = 0; i < len; i++) {
-                       if (rates[i] == 0)
-                               break;
-                       range->bitrate[j] = (rates[i] & 0x7f) * 500000;
-                       /* check for non 802.11b rates */
-                       if (range->bitrate[j] == 6000000 ||
-                               range->bitrate[j] == 9000000 ||
-                               (range->bitrate[j] >= 12000000 &&
-                               range->bitrate[j] != 22000000))
-                               has_80211g_rates = 1;
-                       j++;
-               }
-               range->num_bitrates = j;
-       } else
-               range->num_bitrates = 0;
-
-       /* fill in 802.11g rates */
-       if (has_80211g_rates) {
-               num = range->num_bitrates;
-               for (i = 4; i < ARRAY_SIZE(rndis_rates); i++) {
-                       for (j = 0; j < num; j++) {
-                               if (range->bitrate[j] ==
-                                       rndis_rates[i].bitrate * 100000)
-                                       break;
-                       }
-                       if (j == num)
-                               range->bitrate[range->num_bitrates++] =
-                                       rndis_rates[i].bitrate * 100000;
-                       if (range->num_bitrates == IW_MAX_BITRATES)
-                               break;
-               }
-
-               /* estimated max real througput in bps */
-               range->throughput = 54 * 1000 * 1000 / 2;
-
-               /* ~35% more with afterburner */
-               if (priv->param_afterburner)
-                       range->throughput = range->throughput / 100 * 135;
-       } else {
-               /* estimated max real througput in bps */
-               range->throughput = 11 * 1000 * 1000 / 2;
-       }
-
-       range->num_channels = 14;
-
-       for (i = 0; (i < 14) && (i < IW_MAX_FREQUENCIES); i++) {
-               range->freq[i].i = i + 1;
-               range->freq[i].m = ieee80211_dsss_chan_to_freq(i + 1) * 100000;
-               range->freq[i].e = 1;
-       }
-       range->num_frequency = i;
-
-       range->min_rts = 0;
-       range->max_rts = 2347;
-       range->min_frag = 256;
-       range->max_frag = 2346;
-
-       range->max_qual.qual = 100;
-       range->max_qual.level = 100;
-       range->max_qual.updated = IW_QUAL_QUAL_UPDATED
-                               | IW_QUAL_LEVEL_UPDATED
-                               | IW_QUAL_NOISE_INVALID;
-
-       range->we_version_compiled = WIRELESS_EXT;
-       range->we_version_source = WIRELESS_EXT;
-
-       range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_WPA2 |
-                       IW_ENC_CAPA_CIPHER_TKIP | IW_ENC_CAPA_CIPHER_CCMP;
-       return 0;
-}
-
-
 static int rndis_iw_set_essid(struct net_device *dev,
     struct iw_request_info *info, union iwreq_data *wrqu, char *essid)
 {
@@ -2189,7 +2082,7 @@ static const iw_handler rndis_iw_handler[] =
        IW_IOCTL(SIOCGIWFREQ)      = rndis_iw_get_freq,
        IW_IOCTL(SIOCSIWMODE)      = (iw_handler) cfg80211_wext_siwmode,
        IW_IOCTL(SIOCGIWMODE)      = (iw_handler) cfg80211_wext_giwmode,
-       IW_IOCTL(SIOCGIWRANGE)     = rndis_iw_get_range,
+       IW_IOCTL(SIOCGIWRANGE)     = (iw_handler) cfg80211_wext_giwrange,
        IW_IOCTL(SIOCSIWAP)        = rndis_iw_set_bssid,
        IW_IOCTL(SIOCGIWAP)        = rndis_iw_get_bssid,
        IW_IOCTL(SIOCSIWSCAN)      = rndis_iw_set_scan,
@@ -2633,6 +2526,7 @@ static int rndis_wext_bind(struct usbnet *usbdev, struct usb_interface *intf)
        priv->band.bitrates = priv->rates;
        priv->band.n_bitrates = ARRAY_SIZE(rndis_rates);
        wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band;
+       wiphy->signal_type = CFG80211_SIGNAL_TYPE_UNSPEC;
 
        set_wiphy_dev(wiphy, &usbdev->udev->dev);