|
@@ -2441,9 +2441,21 @@ void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb)
|
|
goto drop;
|
|
goto drop;
|
|
|
|
|
|
if (status->flag & RX_FLAG_HT) {
|
|
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;
|
|
goto drop;
|
|
/* HT rates are not in the table - use the highest legacy rate
|
|
/* HT rates are not in the table - use the highest legacy rate
|
|
* for now since other parts of mac80211 may not yet be fully
|
|
* for now since other parts of mac80211 may not yet be fully
|