mac80211: fix max HT rate processing on mac80211
The max MCS index is 76, fix the higher check to allow through frames received at MCS 76. This is a non-issue for current drivers as MCS 76 is only possible with a device supporting 4 spatial streams. While at it change the WARN_ON() on invalid HT rates to a WARN() to provide more useful information. This will help debug issues when the driver is passing up a bogus HT rate value. The rate must map to a valid MCS index which can be any of the values in the set [0 - 76] (inclusive). Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
b34e620faa
commit
e5d6eb8305
|
@ -2441,9 +2441,21 @@ void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb)
|
|||
goto drop;
|
||||
|
||||
if (status->flag & RX_FLAG_HT) {
|
||||
/* rate_idx is MCS index */
|
||||
if (WARN_ON(status->rate_idx < 0 ||
|
||||
status->rate_idx >= 76))
|
||||
/*
|
||||
* rate_idx is MCS index, which can be [0-76] as documented on:
|
||||
*
|
||||
* http://wireless.kernel.org/en/developers/Documentation/ieee80211/802.11n
|
||||
*
|
||||
* Anything else would be some sort of driver or hardware error.
|
||||
* The driver should catch hardware errors.
|
||||
*/
|
||||
if (WARN((status->rate_idx < 0 ||
|
||||
status->rate_idx > 76),
|
||||
"Rate marked as an HT rate but passed "
|
||||
"status->rate_idx is not "
|
||||
"an MCS index [0-76]: %d (0x%02x)\n",
|
||||
status->rate_idx,
|
||||
status->rate_idx))
|
||||
goto drop;
|
||||
/* HT rates are not in the table - use the highest legacy rate
|
||||
* for now since other parts of mac80211 may not yet be fully
|
||||
|
|
Loading…
Reference in New Issue