static
 void wl18xx_get_last_tx_rate(struct wl1271 *wl, struct ieee80211_vif *vif,
-                            struct ieee80211_tx_rate *rate)
+                            u8 band, struct ieee80211_tx_rate *rate)
 {
        u8 fw_rate = wl->fw_status->counters.tx_last_rate;
 
 
        if (fw_rate <= CONF_HW_RATE_INDEX_54MBPS) {
                rate->idx = fw_rate;
+               if (band == IEEE80211_BAND_5GHZ)
+                       rate->idx -= CONF_HW_RATE_INDEX_6MBPS;
                rate->flags = 0;
        } else {
                rate->flags = IEEE80211_TX_RC_MCS;
         * first pass info->control.vif while it's valid, and then fill out
         * the info->status structures
         */
-       wl18xx_get_last_tx_rate(wl, info->control.vif, &info->status.rates[0]);
+       wl18xx_get_last_tx_rate(wl, info->control.vif,
+                               info->band, &info->status.rates[0]);
 
        info->status.rates[0].count = 1; /* no data about retries */
        info->status.ack_signal = -1;