hdr = (struct ieee80211_hdr *) skb->data; 
hdr = (struct ieee80211_hdr_4addr *) skb->data; 
void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb){	struct sta_info *sta;	struct ieee80211_hdr *hdr;	struct hostap_skb_tx_data *meta;	hdr = (struct ieee80211_hdr *) skb->data;	meta = (struct hostap_skb_tx_data *) skb->cb;	spin_lock(&local->ap->sta_table_lock);	sta = ap_get_sta(local->ap, hdr->addr1);	if (!sta) {		spin_unlock(&local->ap->sta_table_lock);		PDEBUG(DEBUG_AP, "%s: Could not find STA " MACSTR " for this "		       "TX error (@%lu)\n",		       local->dev->name, MAC2STR(hdr->addr1), jiffies);		return;	}	sta->tx_since_last_failure = 0;	sta->tx_consecutive_exc++;	if (sta->tx_consecutive_exc >= WLAN_RATE_DECREASE_THRESHOLD &&	    sta->tx_rate_idx > 0 && meta->rate <= sta->tx_rate) {		/* use next lower rate */		int old, rate;		old = rate = sta->tx_rate_idx;		while (rate > 0) {			rate--;			if (ap_tx_rate_ok(rate, sta, local)) {				sta->tx_rate_idx = rate;				break;			}		}		if (old != sta->tx_rate_idx) {			switch (sta->tx_rate_idx) {			case 0: sta->tx_rate = 10; break;			case 1: sta->tx_rate = 20; break;			case 2: sta->tx_rate = 55; break;			case 3: sta->tx_rate = 110; break;			default: sta->tx_rate = 0; break;			}			PDEBUG(DEBUG_AP, "%s: STA " MACSTR " TX rate lowered "			       "to %d\n", local->dev->name, MAC2STR(sta->addr),			       sta->tx_rate);		}		sta->tx_consecutive_exc = 0;	}	spin_unlock(&local->ap->sta_table_lock);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d041674d62e1ad565f2fb6d53ae80b31d6656033/hostap_ap.c/clean/drivers/net/wireless/hostap/hostap_ap.c