]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/wireless/hostap/hostap_ioctl.c
Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband
[linux-2.6-omap-h63xx.git] / drivers / net / wireless / hostap / hostap_ioctl.c
index f892aa87b13e0deb9482daddbf94389685c3e07f..2617d70bcda945814a96fbdf7fde59f79930cdb1 100644 (file)
@@ -50,7 +50,8 @@ static struct iw_statistics *hostap_get_wireless_stats(struct net_device *dev)
 #endif /* in_atomic */
 
                if (update && prism2_update_comms_qual(dev) == 0)
-                       wstats->qual.updated = 7;
+                       wstats->qual.updated = IW_QUAL_ALL_UPDATED |
+                               IW_QUAL_DBM;
 
                wstats->qual.qual = local->comms_qual;
                wstats->qual.level = local->avg_signal;
@@ -59,7 +60,7 @@ static struct iw_statistics *hostap_get_wireless_stats(struct net_device *dev)
                wstats->qual.qual = 0;
                wstats->qual.level = 0;
                wstats->qual.noise = 0;
-               wstats->qual.updated = 0;
+               wstats->qual.updated = IW_QUAL_ALL_INVALID;
        }
 
        return wstats;
@@ -335,7 +336,7 @@ static int hostap_set_rate(struct net_device *dev)
               hostap_set_word(dev, HFA384X_RID_CNFSUPPORTEDRATES,
                               local->tx_rate_control) ||
               local->func->reset_port(dev));
-               
+
        if (ret) {
                printk(KERN_WARNING "%s: TXRateControl/cnfSupportedRates "
                       "setting to 0x%x failed\n",
@@ -551,7 +552,6 @@ static int prism2_ioctl_giwaplist(struct net_device *dev,
 
        kfree(addr);
        kfree(qual);
-
        return 0;
 }
 
@@ -1827,13 +1827,6 @@ static char * __prism2_translate_scan(local_info_t *local,
        iwe.cmd = SIOCGIWAP;
        iwe.u.ap_addr.sa_family = ARPHRD_ETHER;
        memcpy(iwe.u.ap_addr.sa_data, bssid, ETH_ALEN);
-       /* FIX:
-        * I do not know how this is possible, but iwe_stream_add_event
-        * seems to re-order memcpy execution so that len is set only
-        * after copying.. Pre-setting len here "fixes" this, but real
-        * problems should be solved (after which these iwe.len
-        * settings could be removed from this function). */
-       iwe.len = IW_EV_ADDR_LEN;
        current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe,
                                          IW_EV_ADDR_LEN);
 
@@ -1843,7 +1836,6 @@ static char * __prism2_translate_scan(local_info_t *local,
        iwe.cmd = SIOCGIWESSID;
        iwe.u.data.length = ssid_len;
        iwe.u.data.flags = 1;
-       iwe.len = IW_EV_POINT_LEN + iwe.u.data.length;
        current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, ssid);
 
        memset(&iwe, 0, sizeof(iwe));
@@ -1859,7 +1851,6 @@ static char * __prism2_translate_scan(local_info_t *local,
                        iwe.u.mode = IW_MODE_MASTER;
                else
                        iwe.u.mode = IW_MODE_ADHOC;
-               iwe.len = IW_EV_UINT_LEN;
                current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe,
                                                  IW_EV_UINT_LEN);
        }
@@ -1877,7 +1868,6 @@ static char * __prism2_translate_scan(local_info_t *local,
        if (chan > 0) {
                iwe.u.freq.m = freq_list[le16_to_cpu(chan - 1)] * 100000;
                iwe.u.freq.e = 1;
-               iwe.len = IW_EV_FREQ_LEN;
                current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe,
                                                  IW_EV_FREQ_LEN);
        }
@@ -1894,7 +1884,10 @@ static char * __prism2_translate_scan(local_info_t *local,
                        iwe.u.qual.noise =
                                HFA384X_LEVEL_TO_dBm(le16_to_cpu(scan->anl));
                }
-               iwe.len = IW_EV_QUAL_LEN;
+               iwe.u.qual.updated = IW_QUAL_LEVEL_UPDATED
+                       | IW_QUAL_NOISE_UPDATED
+                       | IW_QUAL_QUAL_INVALID
+                       | IW_QUAL_DBM;
                current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe,
                                                  IW_EV_QUAL_LEN);
        }
@@ -1906,7 +1899,6 @@ static char * __prism2_translate_scan(local_info_t *local,
        else
                iwe.u.data.flags = IW_ENCODE_DISABLED;
        iwe.u.data.length = 0;
-       iwe.len = IW_EV_POINT_LEN + iwe.u.data.length;
        current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, "");
 
        /* TODO: add SuppRates into BSS table */
@@ -1930,7 +1922,7 @@ static char * __prism2_translate_scan(local_info_t *local,
        }
 
        /* TODO: add BeaconInt,resp_rate,atim into BSS table */
-       buf = kmalloc(MAX_WPA_IE_LEN * 2 + 30, GFP_KERNEL);
+       buf = kmalloc(MAX_WPA_IE_LEN * 2 + 30, GFP_ATOMIC);
        if (buf && scan) {
                memset(&iwe, 0, sizeof(iwe));
                iwe.cmd = IWEVCUSTOM;
@@ -2239,14 +2231,6 @@ static const struct iw_priv_args prism2_priv[] = {
          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "host_decrypt" },
        { PRISM2_PARAM_HOST_DECRYPT,
          0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "gethost_decrypt" },
-       { PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX,
-         IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "busmaster_rx" },
-       { PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX,
-         0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getbusmaster_rx" },
-       { PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX,
-         IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "busmaster_tx" },
-       { PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX,
-         0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getbusmaster_tx" },
 #ifndef PRISM2_NO_STATION_MODES
        { PRISM2_PARAM_HOST_ROAMING,
          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "host_roaming" },
@@ -2495,14 +2479,6 @@ static int prism2_ioctl_priv_prism2_param(struct net_device *dev,
                        ret = -EINVAL;
                break;
 
-       case PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX:
-               local->bus_master_threshold_rx = value;
-               break;
-
-       case PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX:
-               local->bus_master_threshold_tx = value;
-               break;
-
 #ifndef PRISM2_NO_STATION_MODES
        case PRISM2_PARAM_HOST_ROAMING:
                if (value < 0 || value > 2) {
@@ -2799,14 +2775,6 @@ static int prism2_ioctl_priv_get_prism2_param(struct net_device *dev,
                *param = local->host_decrypt;
                break;
 
-       case PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX:
-               *param = local->bus_master_threshold_rx;
-               break;
-
-       case PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX:
-               *param = local->bus_master_threshold_tx;
-               break;
-
        case PRISM2_PARAM_HOST_ROAMING:
                *param = local->host_roaming;
                break;
@@ -3112,9 +3080,7 @@ static int prism2_ioctl_priv_download(local_info_t *local, struct iw_point *p)
        ret = local->func->download(local, param);
 
  out:
-       if (param != NULL)
-               kfree(param);
-
+       kfree(param);
        return ret;
 }
 #endif /* PRISM2_DOWNLOAD_SUPPORT */
@@ -3808,11 +3774,11 @@ static int prism2_ioctl_siwmlme(struct net_device *dev,
        switch (mlme->cmd) {
        case IW_MLME_DEAUTH:
                return prism2_sta_send_mgmt(local, mlme->addr.sa_data,
-                                           WLAN_FC_STYPE_DEAUTH,
+                                           IEEE80211_STYPE_DEAUTH,
                                            (u8 *) &reason, 2);
        case IW_MLME_DISASSOC:
                return prism2_sta_send_mgmt(local, mlme->addr.sa_data,
-                                           WLAN_FC_STYPE_DISASSOC,
+                                           IEEE80211_STYPE_DISASSOC,
                                            (u8 *) &reason, 2);
        default:
                return -EOPNOTSUPP;
@@ -3829,11 +3795,11 @@ static int prism2_ioctl_mlme(local_info_t *local,
        switch (param->u.mlme.cmd) {
        case MLME_STA_DEAUTH:
                return prism2_sta_send_mgmt(local, param->sta_addr,
-                                           WLAN_FC_STYPE_DEAUTH,
+                                           IEEE80211_STYPE_DEAUTH,
                                            (u8 *) &reason, 2);
        case MLME_STA_DISASSOC:
                return prism2_sta_send_mgmt(local, param->sta_addr,
-                                           WLAN_FC_STYPE_DISASSOC,
+                                           IEEE80211_STYPE_DISASSOC,
                                            (u8 *) &reason, 2);
        default:
                return -EOPNOTSUPP;
@@ -3921,9 +3887,7 @@ static int prism2_ioctl_priv_hostapd(local_info_t *local, struct iw_point *p)
        }
 
  out:
-       if (param != NULL)
-               kfree(param);
-
+       kfree(param);
        return ret;
 }