wstats->qual.updated = 0; 
wstats->qual.updated = IW_QUAL_ALL_INVALID; 
static struct iw_statistics *hostap_get_wireless_stats(struct net_device *dev){	struct hostap_interface *iface;	local_info_t *local;	struct iw_statistics *wstats;	iface = netdev_priv(dev);	local = iface->local;	/* Why are we doing that ? Jean II */	if (iface->type != HOSTAP_INTERFACE_MAIN)		return NULL;	wstats = &local->wstats;	wstats->status = 0;	wstats->discard.code =		local->comm_tallies.rx_discards_wep_undecryptable;	wstats->discard.misc =		local->comm_tallies.rx_fcs_errors +		local->comm_tallies.rx_discards_no_buffer +		local->comm_tallies.tx_discards_wrong_sa;	wstats->discard.retries =		local->comm_tallies.tx_retry_limit_exceeded;	wstats->discard.fragment =		local->comm_tallies.rx_message_in_bad_msg_fragments;	if (local->iw_mode != IW_MODE_MASTER &&	    local->iw_mode != IW_MODE_REPEAT) {		int update = 1;#ifdef in_atomic		/* RID reading might sleep and it must not be called in		 * interrupt context or while atomic. However, this		 * function seems to be called while atomic (at least in Linux		 * 2.5.59). Update signal quality values only if in suitable		 * context. Otherwise, previous values read from tick timer		 * will be used. */		if (in_atomic())			update = 0;#endif /* in_atomic */		if (update && prism2_update_comms_qual(dev) == 0)			wstats->qual.updated = 7;		wstats->qual.qual = local->comms_qual;		wstats->qual.level = local->avg_signal;		wstats->qual.noise = local->avg_noise;	} else {		wstats->qual.qual = 0;		wstats->qual.level = 0;		wstats->qual.noise = 0;		wstats->qual.updated = 0;	}	return wstats;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/c28df16ed70d1b6cefd12135e3c68bfccd1bb635/hostap_ioctl.c/buggy/drivers/net/wireless/hostap/hostap_ioctl.c