mac80211: disable CCK rates for 802.11n clients on brcmsmac to fix crash issues
[librecmc/librecmc.git] / package / kernel / mac80211 / patches / 300-pending_work.patch
index b5a9c1a65f8e72e45efee392d8de471cf4178034..071d62f583bb8f6fd4870f1b55dee2a51c56eae9 100644 (file)
  }
  
  static void
+@@ -820,6 +828,9 @@ minstrel_ht_update_cck(struct minstrel_p
+       if (sband->band != IEEE80211_BAND_2GHZ)
+               return;
++      if (!(mp->hw->flags & IEEE80211_HW_SUPPORTS_HT_CCK_RATES))
++              return;
++
+       mi->cck_supported = 0;
+       mi->cck_supported_short = 0;
+       for (i = 0; i < 4; i++) {
 --- a/net/mac80211/rx.c
 +++ b/net/mac80211/rx.c
 @@ -936,8 +936,14 @@ ieee80211_rx_h_check(struct ieee80211_rx
                        ath9k_hw_rxena(ah);
                }
        } while (1);
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -802,7 +802,8 @@ void ath9k_set_hw_capab(struct ath_softc
+               IEEE80211_HW_PS_NULLFUNC_STACK |
+               IEEE80211_HW_SPECTRUM_MGMT |
+               IEEE80211_HW_REPORTS_TX_ACK_STATUS |
+-              IEEE80211_HW_SUPPORTS_RC_TABLE;
++              IEEE80211_HW_SUPPORTS_RC_TABLE |
++              IEEE80211_HW_SUPPORTS_HT_CCK_RATES;
+       if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT) {
+               hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION;
+--- a/drivers/net/wireless/ath/carl9170/main.c
++++ b/drivers/net/wireless/ath/carl9170/main.c
+@@ -1878,7 +1878,8 @@ void *carl9170_alloc(size_t priv_size)
+                    IEEE80211_HW_PS_NULLFUNC_STACK |
+                    IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC |
+                    IEEE80211_HW_SUPPORTS_RC_TABLE |
+-                   IEEE80211_HW_SIGNAL_DBM;
++                   IEEE80211_HW_SIGNAL_DBM |
++                   IEEE80211_HW_SUPPORTS_HT_CCK_RATES;
+       if (!modparam_noht) {
+               /*
+--- a/drivers/net/wireless/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/rt2x00/rt2800lib.c
+@@ -6133,7 +6133,8 @@ static int rt2800_probe_hw_mode(struct r
+           IEEE80211_HW_SUPPORTS_PS |
+           IEEE80211_HW_PS_NULLFUNC_STACK |
+           IEEE80211_HW_AMPDU_AGGREGATION |
+-          IEEE80211_HW_REPORTS_TX_ACK_STATUS;
++          IEEE80211_HW_REPORTS_TX_ACK_STATUS |
++          IEEE80211_HW_SUPPORTS_HT_CCK_RATES;
+       /*
+        * Don't set IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING for USB devices
+--- a/include/net/mac80211.h
++++ b/include/net/mac80211.h
+@@ -1499,6 +1499,7 @@ enum ieee80211_hw_flags {
+       IEEE80211_HW_SUPPORTS_RC_TABLE                  = 1<<24,
+       IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF              = 1<<25,
+       IEEE80211_HW_TIMING_BEACON_ONLY                 = 1<<26,
++      IEEE80211_HW_SUPPORTS_HT_CCK_RATES              = 1<<27,
+ };
+ /**