struct ieee80211_hdr *hdr)
 {
        struct ieee80211_local *local = sdata->local;
+       struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
        u8 *p;
 
-       if (local->hw.queues < IEEE80211_NUM_ACS)
+       if ((info->control.flags & IEEE80211_TX_CTRL_DONT_REORDER) ||
+           local->hw.queues < IEEE80211_NUM_ACS)
                return 0;
 
        if (!ieee80211_is_data(hdr->frame_control)) {
 u16 __ieee80211_select_queue(struct ieee80211_sub_if_data *sdata,
                             struct sta_info *sta, struct sk_buff *skb)
 {
+       struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
        struct mac80211_qos_map *qos_map;
        bool qos;
 
        else
                qos = false;
 
-       if (!qos) {
+       if (!qos || (info->control.flags & IEEE80211_TX_CTRL_DONT_REORDER)) {
                skb->priority = 0; /* required for correct WPA/11i MIC */
                return IEEE80211_AC_BE;
        }