diff options
Diffstat (limited to 'drivers/net/wireless/hostap/hostap_ioctl.c')
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_ioctl.c | 32 | 
1 files changed, 10 insertions, 22 deletions
diff --git a/drivers/net/wireless/hostap/hostap_ioctl.c b/drivers/net/wireless/hostap/hostap_ioctl.c index e720369a351..2617d70bcda 100644 --- a/drivers/net/wireless/hostap/hostap_ioctl.c +++ b/drivers/net/wireless/hostap/hostap_ioctl.c @@ -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; @@ -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; @@ -3088,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 */ @@ -3897,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;  }  | 
