++ /* fall back to the old minstrel for legacy stations */
++ if (sta && !sta->ht_cap.ht_supported) {
++ msp->is_ht = false;
++ memset(&msp->legacy, 0, sizeof(msp->legacy));
++ msp->legacy.r = msp->ratelist;
++ msp->legacy.sample_table = msp->sample_table;
++ return mac80211_minstrel.rate_init(priv, sband, sta, &msp->legacy);
++ }
++
++ BUILD_BUG_ON(ARRAY_SIZE(minstrel_mcs_groups) !=
++ MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS);
++
++ msp->is_ht = true;
++ memset(mi, 0, sizeof(*mi));
++ mi->stats_update = jiffies;
++
++ ack_dur = ieee80211_frame_duration(local, 10, 60, 1, 1);
++ mi->overhead = ieee80211_frame_duration(local, 0, 60, 1, 1) + ack_dur;
++ mi->overhead_rtscts = mi->overhead + 2 * ack_dur;
++
++ mi->avg_ampdu_len = MINSTREL_FRAC(1, 1);
++
++ /* When using MRR, sample more on the first attempt, without delay */
++ if (mp->has_mrr) {
++ mi->sample_count = 16;
++ mi->sample_wait = 0;
++ } else {
++ mi->sample_count = 8;
++ mi->sample_wait = 8;
++ }
++ mi->sample_tries = 4;
++