flags |= IWL_TX_FLAGS_ENCRYPT_DIS;
 
                /*
-                * For data packets rate info comes from the fw. Only
-                * set rate/antenna during connection establishment or in case
-                * no station is given.
+                * For data and mgmt packets rate info comes from the fw. Only
+                * set rate/antenna for injected frames with fixed rate, or
+                * when no sta is given.
                 */
-               if (!sta || !ieee80211_is_data(hdr->frame_control) ||
-                   mvmsta->sta_state < IEEE80211_STA_AUTHORIZED) {
+               if (unlikely(!sta ||
+                            info->control.flags & IEEE80211_TX_CTRL_RATE_INJECT)) {
                        flags |= IWL_TX_FLAGS_CMD_RATE;
                        rate_n_flags =
                                iwl_mvm_get_tx_rate_n_flags(mvm, info, sta,
                                                            hdr->frame_control);
+               } else if (!ieee80211_is_data(hdr->frame_control) ||
+                          mvmsta->sta_state < IEEE80211_STA_AUTHORIZED) {
+                       /* These are important frames */
+                       flags |= IWL_TX_FLAGS_HIGH_PRI;
                }
 
                if (mvm->trans->trans_cfg->device_family >=