- if (info->tx_control.flags & IEEE80211_TXCTL_REQ_TX_STATUS) {
- struct ieee80211_tx_status tx_status = {{0}};
- struct ieee80211_hdr *hdr;
- size_t hdrlen = info->hdrlen;
-
- skb_pull(skb, sizeof(struct adm8211_tx_hdr));
- hdr = (struct ieee80211_hdr *)skb_push(skb, hdrlen);
- memcpy(hdr, skb->cb, hdrlen);
- memcpy(&tx_status.control, &info->tx_control,
- sizeof(tx_status.control));
- if (!(status & TDES0_STATUS_ES))
+ memset(&tx_status, 0, sizeof(tx_status));
+ skb_pull(skb, sizeof(struct adm8211_tx_hdr));
+ memcpy(skb_push(skb, info->hdrlen), skb->cb, info->hdrlen);
+ memcpy(&tx_status.control, &info->tx_control,
+ sizeof(tx_status.control));
+ if (!(tx_status.control.flags & IEEE80211_TXCTL_NO_ACK)) {
+ if (status & TDES0_STATUS_ES)
+ tx_status.excessive_retries = 1;
+ else