fc & WLAN_FC_TODS ? " ToDS" : "", fc & WLAN_FC_FROMDS ? " FromDS" : ""); 
fc & IEEE80211_FCTL_TODS ? " ToDS" : "", fc & IEEE80211_FCTL_FROMDS ? " FromDS" : ""); 
static void prism2_txexc(local_info_t *local){	struct net_device *dev = local->dev;	u16 status, fc;	int show_dump, res;	char *payload = NULL;	struct hfa384x_tx_frame txdesc;	show_dump = local->frame_dump & PRISM2_DUMP_TXEXC_HDR;	local->stats.tx_errors++;	res = hostap_tx_compl_read(local, 1, &txdesc, &payload);	HFA384X_OUTW(HFA384X_EV_TXEXC, HFA384X_EVACK_OFF);	if (res)		return;	status = le16_to_cpu(txdesc.status);	/* 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 (status & (HFA384X_TX_STATUS_RETRYERR | HFA384X_TX_STATUS_AGEDERR))	{		union iwreq_data wrqu;		/* Copy 802.11 dest address. */		memcpy(wrqu.addr.sa_data, txdesc.addr1, ETH_ALEN);		wrqu.addr.sa_family = ARPHRD_ETHER;		wireless_send_event(dev, IWEVTXDROP, &wrqu, NULL);	} else		show_dump = 1;	if (local->iw_mode == IW_MODE_MASTER ||	    local->iw_mode == IW_MODE_REPEAT ||	    local->wds_type & HOSTAP_WDS_AP_CLIENT) {		struct sk_buff *skb;		skb = dev_alloc_skb(sizeof(txdesc));		if (skb) {			memcpy(skb_put(skb, sizeof(txdesc)), &txdesc,			       sizeof(txdesc));			skb_queue_tail(&local->sta_tx_exc_list, skb);			tasklet_schedule(&local->sta_tx_exc_tasklet);		}	}	if (txdesc.sw_support)		hostap_tx_callback(local, &txdesc, 0, payload);	kfree(payload);	if (!show_dump)		return;	PDEBUG(DEBUG_EXTRA, "%s: TXEXC - status=0x%04x (%s%s%s%s)"	       " tx_control=%04x\n",	       dev->name, status,	       status & HFA384X_TX_STATUS_RETRYERR ? "[RetryErr]" : "",	       status & HFA384X_TX_STATUS_AGEDERR ? "[AgedErr]" : "",	       status & HFA384X_TX_STATUS_DISCON ? "[Discon]" : "",	       status & HFA384X_TX_STATUS_FORMERR ? "[FormErr]" : "",	       le16_to_cpu(txdesc.tx_control));	fc = le16_to_cpu(txdesc.frame_control);	PDEBUG(DEBUG_EXTRA, "   retry_count=%d tx_rate=%d fc=0x%04x "	       "(%s%s%s::%d%s%s)\n",	       txdesc.retry_count, txdesc.tx_rate, fc,	       WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT ? "Mgmt" : "",	       WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_CTL ? "Ctrl" : "",	       WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_DATA ? "Data" : "",	       WLAN_FC_GET_STYPE(fc) >> 4,	       fc & WLAN_FC_TODS ? " ToDS" : "",	       fc & WLAN_FC_FROMDS ? " FromDS" : "");	PDEBUG(DEBUG_EXTRA, "   A1=" MACSTR " A2=" MACSTR " A3="	       MACSTR " A4=" MACSTR "\n",	       MAC2STR(txdesc.addr1), MAC2STR(txdesc.addr2),	       MAC2STR(txdesc.addr3), MAC2STR(txdesc.addr4));}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b2f4a2e3b1620667da9654f9e220c92ea52bdbe4/hostap_hw.c/clean/drivers/net/wireless/hostap/hostap_hw.c