u32 *rate_n_flags, int index)
 {
        struct iwl_priv *priv;
+       u8 valid_tx_ant;
+       u8 ant_sel_tx;
 
        priv = lq_sta->drv;
+       valid_tx_ant = priv->hw_params.valid_tx_ant;
        if (lq_sta->dbg_fixed_rate) {
-               if (index < 12) {
+               ant_sel_tx =
+                 ((lq_sta->dbg_fixed_rate & RATE_MCS_ANT_ABC_MSK)
+                 >> RATE_MCS_ANT_POS);
+               if ((valid_tx_ant & ant_sel_tx) == ant_sel_tx) {
                        *rate_n_flags = lq_sta->dbg_fixed_rate;
+                       IWL_DEBUG_RATE(priv, "Fixed rate ON\n");
                } else {
-                       if (lq_sta->band == IEEE80211_BAND_5GHZ)
-                               *rate_n_flags = 0x800D;
-                       else
-                               *rate_n_flags = 0x820A;
+                       lq_sta->dbg_fixed_rate = 0;
+                       IWL_ERR(priv,
+                           "Invalid antenna selection 0x%X, Valid is 0x%X\n",
+                           ant_sel_tx, valid_tx_ant);
+                       IWL_DEBUG_RATE(priv, "Fixed rate OFF\n");
                }
-               IWL_DEBUG_RATE(priv, "Fixed rate ON\n");
        } else {
                IWL_DEBUG_RATE(priv, "Fixed rate OFF\n");
        }