mirror of https://gitee.com/openkylin/linux.git
mac80211: minstrel_ht: do not sample unsupported rates
ATM minstrel_ht does not check whether a sampling rate is supported. Unsupported rates attempts can trigger when there are holes in bitfields of supported MCSes belonging to the same group (e.g many devices are MCS32 capable without MCS33->39 capable, also we systematically have a hole for CCK rates). Drop any attempts to sample unsupported rates, as suggested by Felix. This is not a problem in minstrel which fills a per STA sample table with only supported rates (though only at init). Signed-off-by: Karl Beldan <karl.beldan@rivierawaves.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
3ef121b511
commit
f12140c04c
|
@ -700,13 +700,17 @@ minstrel_get_sample_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
|
|||
if (!mi->sample_tries)
|
||||
return -1;
|
||||
|
||||
mg = &mi->groups[mi->sample_group];
|
||||
sample_idx = sample_table[mg->column][mg->index];
|
||||
mr = &mg->rates[sample_idx];
|
||||
sample_group = mi->sample_group;
|
||||
sample_idx += sample_group * MCS_GROUP_RATES;
|
||||
mg = &mi->groups[sample_group];
|
||||
sample_idx = sample_table[mg->column][mg->index];
|
||||
minstrel_next_sample_idx(mi);
|
||||
|
||||
if (!(mg->supported & BIT(sample_idx)))
|
||||
return -1;
|
||||
|
||||
mr = &mg->rates[sample_idx];
|
||||
sample_idx += sample_group * MCS_GROUP_RATES;
|
||||
|
||||
/*
|
||||
* Sampling might add some overhead (RTS, no aggregation)
|
||||
* to the frame. Hence, don't use sampling for the currently
|
||||
|
|
Loading…
Reference in New Issue