* retries */
 #define IEEE80211_RADIOTAP_F_TX_CTS    0x0002  /* used cts 'protection' */
 #define IEEE80211_RADIOTAP_F_TX_RTS    0x0004  /* used rts/cts handshake */
+#define IEEE80211_RADIOTAP_F_TX_NOACK  0x0008  /* don't expect an ack */
 
 
 /* For IEEE80211_RADIOTAP_MCS */
 
        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
        int ret = ieee80211_radiotap_iterator_init(&iterator, rthdr, skb->len,
                                                   NULL);
+       u16 txflags;
 
        info->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT;
        tx->flags &= ~IEEE80211_TX_FRAGMENTED;
                                tx->flags |= IEEE80211_TX_FRAGMENTED;
                        break;
 
+               case IEEE80211_RADIOTAP_TX_FLAGS:
+                       txflags = le16_to_cpu(get_unaligned((__le16*)
+                                               iterator.this_arg));
+                       if (txflags & IEEE80211_RADIOTAP_F_TX_NOACK)
+                               info->flags |= IEEE80211_TX_CTL_NO_ACK;
+                       break;
+
                /*
                 * Please update the file
                 * Documentation/networking/mac80211-injection.txt
                tx->flags |= IEEE80211_TX_UNICAST;
                if (unlikely(local->wifi_wme_noack_test))
                        info->flags |= IEEE80211_TX_CTL_NO_ACK;
-               else
-                       info->flags &= ~IEEE80211_TX_CTL_NO_ACK;
+               /*
+                * Flags are initialized to 0. Hence, no need to
+                * explicitly unset IEEE80211_TX_CTL_NO_ACK since
+                * it might already be set for injected frames.
+                */
        }
 
        if (tx->flags & IEEE80211_TX_FRAGMENTED) {