return;
 
        BUILD_BUG_ON(
-           offsetof(struct ieee80211_tx_info, status.ampdu_ack_len) != 23);
+           offsetof(struct ieee80211_tx_info, status.ack_signal) != 20);
 
-       memset(&txinfo->status.ampdu_ack_len, 0,
+       memset(&txinfo->status.ack_signal, 0,
               sizeof(struct ieee80211_tx_info) -
-              offsetof(struct ieee80211_tx_info, status.ampdu_ack_len));
+              offsetof(struct ieee80211_tx_info, status.ack_signal));
 
        if (atomic_read(&ar->tx_total_queued))
                ar->tx_schedule = true;
 
         * Clear manually, ieee80211_tx_info_clear_status would
         * clear the counts too and we need them.
         */
-       memset(&info->status.ampdu_ack_len, 0,
+       memset(&info->status.ack_signal, 0,
               sizeof(struct ieee80211_tx_info) -
-              offsetof(struct ieee80211_tx_info, status.ampdu_ack_len));
+              offsetof(struct ieee80211_tx_info, status.ack_signal));
        BUILD_BUG_ON(offsetof(struct ieee80211_tx_info,
-                             status.ampdu_ack_len) != 23);
+                             status.ack_signal) != 20);
 
        if (entry_hdr->flags & cpu_to_le16(P54_HDR_FLAG_DATA_ALIGN))
                pad = entry_data->align[0];
 
 #define IEEE80211_TX_INFO_RATE_DRIVER_DATA_SIZE 24
 
 /* maximum number of rate stages */
-#define IEEE80211_TX_MAX_RATES 5
+#define IEEE80211_TX_MAX_RATES 4
 
 /**
  * struct ieee80211_tx_rate - rate selection/status
                } control;
                struct {
                        struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES];
-                       u8 ampdu_ack_len;
                        int ack_signal;
+                       u8 ampdu_ack_len;
                        u8 ampdu_len;
                        u8 antenna;
-                       /* 14 bytes free */
+                       /* 21 bytes free */
                } status;
                struct {
                        struct ieee80211_tx_rate driver_rates[
                info->status.rates[i].count = 0;
 
        BUILD_BUG_ON(
-           offsetof(struct ieee80211_tx_info, status.ampdu_ack_len) != 23);
+           offsetof(struct ieee80211_tx_info, status.ack_signal) != 20);
        memset(&info->status.ampdu_ack_len, 0,
               sizeof(struct ieee80211_tx_info) -
               offsetof(struct ieee80211_tx_info, status.ampdu_ack_len));
 
                        info->control.rates[1].idx = -1;
                        info->control.rates[2].idx = -1;
                        info->control.rates[3].idx = -1;
-                       info->control.rates[4].idx = -1;
-                       BUILD_BUG_ON(IEEE80211_TX_MAX_RATES != 5);
+                       BUILD_BUG_ON(IEEE80211_TX_MAX_RATES != 4);
                        info->flags &= ~IEEE80211_TX_CTL_RATE_CTRL_PROBE;
                } else {
                        hdr->frame_control &= ~morefrags;