mac80211: update to 2012-09-07, adds ath9k beacon fixes, mesh/adhoc fixes, and more
[openwrt.git] / package / mac80211 / patches / 550-mac80211_optimize_mcs_rate_mask.patch
index d1f4599..a966fef 100644 (file)
@@ -1,6 +1,6 @@
 --- a/net/mac80211/ieee80211_i.h
 +++ b/net/mac80211/ieee80211_i.h
-@@ -710,6 +710,8 @@ struct ieee80211_sub_if_data {
+@@ -715,6 +715,8 @@ struct ieee80211_sub_if_data {
  
        /* bitmap of allowed (non-MCS) rate indexes for rate control */
        u32 rc_rateidx_mask[IEEE80211_NUM_BANDS];
@@ -11,7 +11,7 @@
        union {
 --- a/net/mac80211/cfg.c
 +++ b/net/mac80211/cfg.c
-@@ -2136,9 +2136,20 @@ static int ieee80211_set_bitrate_mask(st
+@@ -2149,9 +2149,20 @@ static int ieee80211_set_bitrate_mask(st
        }
  
        for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
@@ -34,7 +34,7 @@
        return 0;
 --- a/include/net/mac80211.h
 +++ b/include/net/mac80211.h
-@@ -3670,7 +3670,7 @@ void ieee80211_send_bar(struct ieee80211
+@@ -3718,7 +3718,7 @@ void ieee80211_send_bar(struct ieee80211
   *    (deprecated; this will be removed once drivers get updated to use
   *    rate_idx_mask)
   * @rate_idx_mask: user-requested (legacy) rate mask
@@ -43,7 +43,7 @@
   * @bss: whether this frame is sent out in AP or IBSS mode
   */
  struct ieee80211_tx_rate_control {
-@@ -3682,7 +3682,7 @@ struct ieee80211_tx_rate_control {
+@@ -3730,7 +3730,7 @@ struct ieee80211_tx_rate_control {
        bool rts, short_preamble;
        u8 max_rate_idx;
        u32 rate_idx_mask;
        else
                txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;
 -      memcpy(txrc.rate_idx_mcs_mask,
--             tx->sdata->rc_rateidx_mcs_mask[tx->channel->band],
+-             tx->sdata->rc_rateidx_mcs_mask[info->band],
 -             sizeof(txrc.rate_idx_mcs_mask));
 +
-+      if (tx->sdata->rc_has_mcs_mask[tx->channel->band])
++      if (tx->sdata->rc_has_mcs_mask[info->band])
 +              txrc.rate_idx_mcs_mask =
-+                      tx->sdata->rc_rateidx_mcs_mask[tx->channel->band];
++                      tx->sdata->rc_rateidx_mcs_mask[info->band];
 +
        txrc.bss = (tx->sdata->vif.type == NL80211_IFTYPE_AP ||
                    tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT ||
                    tx->sdata->vif.type == NL80211_IFTYPE_ADHOC);
-@@ -2464,8 +2466,6 @@ struct sk_buff *ieee80211_beacon_get_tim
+@@ -2447,8 +2449,6 @@ struct sk_buff *ieee80211_beacon_get_tim
                txrc.max_rate_idx = -1;
        else
                txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;