static void get_tx_error(struct airo_info *ai, u32 fid) 
static void get_tx_error(struct airo_info *ai, s32 fid) 
static void get_tx_error(struct airo_info *ai, u32 fid){	u16 status;	if (fid < 0)		status = ((WifiCtlHdr *)ai->txfids[0].virtual_host_addr)->ctlhdr.status;	else {		if (bap_setup(ai, ai->fids[fid] & 0xffff, 4, BAP0) != SUCCESS)			return;		bap_read(ai, &status, 2, BAP0);	}	if (le16_to_cpu(status) & 2) /* Too many retries */		ai->stats.tx_aborted_errors++;	if (le16_to_cpu(status) & 4) /* Transmit lifetime exceeded */		ai->stats.tx_heartbeat_errors++;	if (le16_to_cpu(status) & 8) /* Aid fail */		{ }	if (le16_to_cpu(status) & 0x10) /* MAC disabled */		ai->stats.tx_carrier_errors++;	if (le16_to_cpu(status) & 0x20) /* Association lost */		{ }	/* We produce a TXDROP event only for retry or lifetime	 * exceeded, because that's the only status that really mean	 * that this particular node went away.	 * Other errors means that *we* screwed up. - Jean II */	if ((le16_to_cpu(status) & 2) ||	     (le16_to_cpu(status) & 4)) {		union iwreq_data	wrqu;		char junk[0x18];		/* Faster to skip over useless data than to do		 * another bap_setup(). We are at offset 0x6 and		 * need to go to 0x18 and read 6 bytes - Jean II */		bap_read(ai, (u16 *) junk, 0x18, BAP0);		/* Copy 802.11 dest address.		 * We use the 802.11 header because the frame may		 * not be 802.3 or may be mangled...		 * In Ad-Hoc mode, it will be the node address.		 * In managed mode, it will be most likely the AP addr		 * User space will figure out how to convert it to		 * whatever it needs (IP address or else).		 * - Jean II */		memcpy(wrqu.addr.sa_data, junk + 0x12, ETH_ALEN);		wrqu.addr.sa_family = ARPHRD_ETHER;		/* Send event to user space */		wireless_send_event(ai->dev, IWEVTXDROP, &wrqu, NULL);	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/29b09fcc341ede8dc08c900b132903fdd0231400/airo.c/buggy/drivers/net/wireless/airo.c