From 28240cc8d2d2d5d345a9459497dfc3c72379b994 Mon Sep 17 00:00:00 2001 From: nbd Date: Fri, 26 Apr 2013 10:52:03 +0000 Subject: mac80211: update to wireless-testing 2013-04-16 + backports Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36448 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../540-mac80211_optimize_mcs_rate_mask.patch | 98 ---------------------- 1 file changed, 98 deletions(-) delete mode 100644 package/mac80211/patches/540-mac80211_optimize_mcs_rate_mask.patch (limited to 'package/mac80211/patches/540-mac80211_optimize_mcs_rate_mask.patch') diff --git a/package/mac80211/patches/540-mac80211_optimize_mcs_rate_mask.patch b/package/mac80211/patches/540-mac80211_optimize_mcs_rate_mask.patch deleted file mode 100644 index 347c92013..000000000 --- a/package/mac80211/patches/540-mac80211_optimize_mcs_rate_mask.patch +++ /dev/null @@ -1,98 +0,0 @@ ---- a/net/mac80211/ieee80211_i.h -+++ b/net/mac80211/ieee80211_i.h -@@ -739,6 +739,8 @@ struct ieee80211_sub_if_data { - - /* bitmap of allowed (non-MCS) rate indexes for rate control */ - u32 rc_rateidx_mask[IEEE80211_NUM_BANDS]; -+ -+ bool rc_has_mcs_mask[IEEE80211_NUM_BANDS]; - u8 rc_rateidx_mcs_mask[IEEE80211_NUM_BANDS][IEEE80211_HT_MCS_MASK_LEN]; - - union { ---- a/net/mac80211/cfg.c -+++ b/net/mac80211/cfg.c -@@ -2386,9 +2386,20 @@ static int ieee80211_set_bitrate_mask(st - } - - for (i = 0; i < IEEE80211_NUM_BANDS; i++) { -+ struct ieee80211_supported_band *sband = wiphy->bands[i]; -+ - sdata->rc_rateidx_mask[i] = mask->control[i].legacy; - memcpy(sdata->rc_rateidx_mcs_mask[i], mask->control[i].mcs, - sizeof(mask->control[i].mcs)); -+ -+ sdata->rc_has_mcs_mask[i] = false; -+ if (!sband) -+ continue; -+ -+ if (memcmp(sdata->rc_rateidx_mcs_mask[i], -+ sband->ht_cap.mcs.rx_mask, -+ sizeof(sband->ht_cap.mcs.rx_mask)) != 0) -+ sdata->rc_has_mcs_mask[i] = true; - } - - return 0; ---- a/include/net/mac80211.h -+++ b/include/net/mac80211.h -@@ -4091,7 +4091,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 -- * @rate_idx_mcs_mask: user-requested MCS rate mask -+ * @rate_idx_mcs_mask: user-requested MCS rate mask (NULL if not in use) - * @bss: whether this frame is sent out in AP or IBSS mode - */ - struct ieee80211_tx_rate_control { -@@ -4103,7 +4103,7 @@ struct ieee80211_tx_rate_control { - bool rts, short_preamble; - u8 max_rate_idx; - u32 rate_idx_mask; -- u8 rate_idx_mcs_mask[IEEE80211_HT_MCS_MASK_LEN]; -+ u8 *rate_idx_mcs_mask; - bool bss; - }; - ---- a/net/mac80211/tx.c -+++ b/net/mac80211/tx.c -@@ -641,9 +641,11 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021 - txrc.max_rate_idx = -1; - else - txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1; -- memcpy(txrc.rate_idx_mcs_mask, -- tx->sdata->rc_rateidx_mcs_mask[info->band], -- sizeof(txrc.rate_idx_mcs_mask)); -+ -+ if (tx->sdata->rc_has_mcs_mask[info->band]) -+ txrc.rate_idx_mcs_mask = -+ 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); -@@ -2511,8 +2513,6 @@ struct sk_buff *ieee80211_beacon_get_tim - txrc.max_rate_idx = -1; - else - txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1; -- memcpy(txrc.rate_idx_mcs_mask, sdata->rc_rateidx_mcs_mask[band], -- sizeof(txrc.rate_idx_mcs_mask)); - txrc.bss = true; - rate_control_get_rate(sdata, NULL, &txrc); - ---- a/net/mac80211/rate.c -+++ b/net/mac80211/rate.c -@@ -460,9 +460,12 @@ void rate_control_get_rate(struct ieee80 - * the common case. - */ - mask = sdata->rc_rateidx_mask[info->band]; -- memcpy(mcs_mask, sdata->rc_rateidx_mcs_mask[info->band], -- sizeof(mcs_mask)); -- if (mask != (1 << txrc->sband->n_bitrates) - 1) { -+ if (mask != (1 << txrc->sband->n_bitrates) - 1 || txrc->rate_idx_mcs_mask) { -+ if (txrc->rate_idx_mcs_mask) -+ memcpy(mcs_mask, txrc->rate_idx_mcs_mask, sizeof(mcs_mask)); -+ else -+ memset(mcs_mask, 0xff, sizeof(mcs_mask)); -+ - if (sta) { - /* Filter out rates that the STA does not support */ - mask &= sta->sta.supp_rates[info->band]; -- cgit v1.2.3