.flags = IEEE80211_RATE_SHORT_PREAMBLE },
        { .bitrate = 60,
          .hw_value = ATH5K_RATE_CODE_6M,
-         .flags = 0 },
+         .flags = IEEE80211_RATE_SUPPORTS_5MHZ |
+                  IEEE80211_RATE_SUPPORTS_10MHZ },
        { .bitrate = 90,
          .hw_value = ATH5K_RATE_CODE_9M,
-         .flags = 0 },
+         .flags = IEEE80211_RATE_SUPPORTS_5MHZ |
+                  IEEE80211_RATE_SUPPORTS_10MHZ },
        { .bitrate = 120,
          .hw_value = ATH5K_RATE_CODE_12M,
-         .flags = 0 },
+         .flags = IEEE80211_RATE_SUPPORTS_5MHZ |
+                  IEEE80211_RATE_SUPPORTS_10MHZ },
        { .bitrate = 180,
          .hw_value = ATH5K_RATE_CODE_18M,
-         .flags = 0 },
+         .flags = IEEE80211_RATE_SUPPORTS_5MHZ |
+                  IEEE80211_RATE_SUPPORTS_10MHZ },
        { .bitrate = 240,
          .hw_value = ATH5K_RATE_CODE_24M,
-         .flags = 0 },
+         .flags = IEEE80211_RATE_SUPPORTS_5MHZ |
+                  IEEE80211_RATE_SUPPORTS_10MHZ },
        { .bitrate = 360,
          .hw_value = ATH5K_RATE_CODE_36M,
-         .flags = 0 },
+         .flags = IEEE80211_RATE_SUPPORTS_5MHZ |
+                  IEEE80211_RATE_SUPPORTS_10MHZ },
        { .bitrate = 480,
          .hw_value = ATH5K_RATE_CODE_48M,
-         .flags = 0 },
+         .flags = IEEE80211_RATE_SUPPORTS_5MHZ |
+                  IEEE80211_RATE_SUPPORTS_10MHZ },
        { .bitrate = 540,
          .hw_value = ATH5K_RATE_CODE_54M,
-         .flags = 0 },
+         .flags = IEEE80211_RATE_SUPPORTS_5MHZ |
+                  IEEE80211_RATE_SUPPORTS_10MHZ },
 };
 
 static inline u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp)
 
 {
        struct ieee80211_channel *channel = ah->ah_current_channel;
        enum ieee80211_band band;
+       struct ieee80211_supported_band *sband;
        struct ieee80211_rate *rate;
        u32 ack_tx_time, eifs, eifs_clock, sifs, sifs_clock;
        u32 slot_time_clock = ath5k_hw_htoclock(ah, slot_time);
+       u32 rate_flags, i;
 
        if (slot_time < 6 || slot_time_clock > AR5K_SLOT_TIME_MAX)
                return -EINVAL;
        else
                band = IEEE80211_BAND_2GHZ;
 
-       rate = &ah->sbands[band].bitrates[0];
+       switch (ah->ah_bwmode) {
+       case AR5K_BWMODE_5MHZ:
+               rate_flags = IEEE80211_RATE_SUPPORTS_5MHZ;
+               break;
+       case AR5K_BWMODE_10MHZ:
+               rate_flags = IEEE80211_RATE_SUPPORTS_10MHZ;
+               break;
+       default:
+               rate_flags = 0;
+               break;
+       }
+       sband = &ah->sbands[band];
+       rate = NULL;
+       for (i = 0; i < sband->n_bitrates; i++) {
+               if ((rate_flags & sband->bitrates[i].flags) != rate_flags)
+                       continue;
+               rate = &sband->bitrates[i];
+               break;
+       }
+       if (WARN_ON(!rate))
+               return -EINVAL;
+
        ack_tx_time = ath5k_hw_get_frame_duration(ah, band, 10, rate, false);
 
        /* ack_tx_time includes an SIFS already */