wstats.updated = 3; 
wstats.noise = ai->wstats.qual.noise; wstats.updated = IW_QUAL_QUAL_UPDATED | IW_QUAL_LEVEL_UPDATED | IW_QUAL_NOISE_UPDATED; 
void mpi_receive_802_11 (struct airo_info *ai){	RxFid rxd;	struct sk_buff *skb = NULL;	u16 fc, len, hdrlen = 0;#pragma pack(1)	struct {		u16 status, len;		u8 rssi[2];		u8 rate;		u8 freq;		u16 tmp[4];	} hdr;#pragma pack()	u16 gap;	u16 *buffer;	char *ptr = ai->rxfids[0].virtual_host_addr+4;	memcpy_fromio(&rxd, ai->rxfids[0].card_ram_off, sizeof(rxd));	memcpy ((char *)&hdr, ptr, sizeof(hdr));	ptr += sizeof(hdr);	/* Bad CRC. Ignore packet */	if (le16_to_cpu(hdr.status) & 2)		hdr.len = 0;	if (ai->wifidev == NULL)		hdr.len = 0;	len = le16_to_cpu(hdr.len);	if (len > 2312) {		printk( KERN_ERR "airo: Bad size %d\n", len );		goto badrx;	}	if (len == 0)		goto badrx;	memcpy ((char *)&fc, ptr, sizeof(fc));	fc = le16_to_cpu(fc);	switch (fc & 0xc) {		case 4:			if ((fc & 0xe0) == 0xc0)				hdrlen = 10;			else				hdrlen = 16;			break;		case 8:			if ((fc&0x300)==0x300){				hdrlen = 30;				break;			}		default:			hdrlen = 24;	}	skb = dev_alloc_skb( len + hdrlen + 2 );	if ( !skb ) {		ai->stats.rx_dropped++;		goto badrx;	}	buffer = (u16*)skb_put (skb, len + hdrlen);	memcpy ((char *)buffer, ptr, hdrlen);	ptr += hdrlen;	if (hdrlen == 24)		ptr += 6;	memcpy ((char *)&gap, ptr, sizeof(gap));	ptr += sizeof(gap);	gap = le16_to_cpu(gap);	if (gap) {		if (gap <= 8)			ptr += gap;		else			printk(KERN_ERR			    "airo: gaplen too big. Problems will follow...\n");	}	memcpy ((char *)buffer + hdrlen, ptr, len);	ptr += len;#ifdef IW_WIRELESS_SPY	  /* defined in iw_handler.h */	if (ai->spy_data.spy_number > 0) {		char *sa;		struct iw_quality wstats;		/* Prepare spy data : addr + qual */		sa = (char*)buffer + 10;		wstats.qual = hdr.rssi[0];		if (ai->rssi)			wstats.level = 0x100 - ai->rssi[hdr.rssi[1]].rssidBm;		else			wstats.level = (hdr.rssi[1] + 321) / 2;		wstats.updated = 3;		/* Update spy records */		wireless_spy_update(ai->dev, sa, &wstats);	}#endif /* IW_WIRELESS_SPY */	skb->mac.raw = skb->data;	skb->pkt_type = PACKET_OTHERHOST;	skb->dev = ai->wifidev;	skb->protocol = htons(ETH_P_802_2);	skb->dev->last_rx = jiffies;	skb->ip_summed = CHECKSUM_NONE;	netif_rx( skb );badrx:	if (rxd.valid == 0) {		rxd.valid = 1;		rxd.rdy = 0;		rxd.len = PKTSIZE;		memcpy_toio(ai->rxfids[0].card_ram_off, &rxd, sizeof(rxd));	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/41480af27a85d6008d9e11db8bc2730407c25e1d/airo.c/clean/drivers/net/wireless/airo.c