mi->sample_count--;
        }
 
-       if (info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) {
+       if (info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE)
                mi->sample_packets += info->status.ampdu_len;
-               minstrel_next_sample_idx(mi);
-       }
 
        for (i = 0; !last; i++) {
                last = (i == IEEE80211_TX_MAX_RATES - 1) ||
        sample_idx = sample_table[mg->column][mg->index];
        mr = &mg->rates[sample_idx];
        sample_idx += mi->sample_group * MCS_GROUP_RATES;
+       minstrel_next_sample_idx(mi);
 
        /*
         * When not using MRR, do not sample if the probability is already
         * higher than 95% to avoid wasting airtime
         */
        if (!mp->has_mrr && (mr->probability > MINSTREL_FRAC(95, 100)))
-               goto next;
+               return -1;
 
        /*
         * Make sure that lower rates get sampled only occasionally,
        if (minstrel_get_duration(sample_idx) >
            minstrel_get_duration(mi->max_tp_rate)) {
                if (mr->sample_skipped < 20)
-                       goto next;
+                       return -1;
 
                if (mi->sample_slow++ > 2)
-                       goto next;
+                       return -1;
        }
 
        return sample_idx;
-
-next:
-       minstrel_next_sample_idx(mi);
-       return -1;
 }
 
 static void