#include "rate.h"
 #include "rc80211_minstrel.h"
 
-#define SAMPLE_COLUMNS 10
 #define SAMPLE_TBL(_mi, _idx, _col) \
                _mi->sample_table[(_idx * SAMPLE_COLUMNS) + _col]
 
        unsigned int sample_ndx;
        sample_ndx = SAMPLE_TBL(mi, mi->sample_row, mi->sample_column);
        mi->sample_row++;
-       if ((int) mi->sample_row > (mi->n_rates - 2)) {
+       if ((int) mi->sample_row >= mi->n_rates) {
                mi->sample_row = 0;
                mi->sample_column++;
                if (mi->sample_column >= SAMPLE_COLUMNS)
 init_sample_table(struct minstrel_sta_info *mi)
 {
        unsigned int i, col, new_idx;
-       unsigned int n_srates = mi->n_rates - 1;
        u8 rnd[8];
 
        mi->sample_column = 0;
        mi->sample_row = 0;
-       memset(mi->sample_table, 0, SAMPLE_COLUMNS * mi->n_rates);
+       memset(mi->sample_table, 0xff, SAMPLE_COLUMNS * mi->n_rates);
 
        for (col = 0; col < SAMPLE_COLUMNS; col++) {
-               for (i = 0; i < n_srates; i++) {
+               for (i = 0; i < mi->n_rates; i++) {
                        get_random_bytes(rnd, sizeof(rnd));
-                       new_idx = (i + rnd[i & 7]) % n_srates;
+                       new_idx = (i + rnd[i & 7]) % mi->n_rates;
 
-                       while (SAMPLE_TBL(mi, new_idx, col) != 0)
-                               new_idx = (new_idx + 1) % n_srates;
+                       while (SAMPLE_TBL(mi, new_idx, col) != 0xff)
+                               new_idx = (new_idx + 1) % mi->n_rates;
 
-                       /* Don't sample the slowest rate (i.e. slowest base
-                        * rate). We must presume that the slowest rate works
-                        * fine, or else other management frames will also be
-                        * failing and the link will break */
-                       SAMPLE_TBL(mi, new_idx, col) = i + 1;
+                       SAMPLE_TBL(mi, new_idx, col) = i;
                }
        }
 }