mac80211: fix max HT rate processing on mac80211
[safe/jmp/linux-2.6] / net / mac80211 / rx.c
index 7647836..006cf89 100644 (file)
@@ -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