All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/2] mac80211: get the rates masks from the txrc in rate_control_get_rate
@ 2013-03-04 22:28 Karl Beldan
  2013-03-04 22:28 ` [PATCH v3 2/2] mac80211: fix the check for mcs rates masking Karl Beldan
  0 siblings, 1 reply; 2+ messages in thread
From: Karl Beldan @ 2013-03-04 22:28 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, Karl Beldan

From: Karl Beldan <karl.beldan@rivierawaves.com>

Currently we get it from the sdata. This uses the ad-hoc masks of the
ieee80211_tx_rate_control txrc and lets the mcs mask get overwritten to
spare an IEEE80211_HT_MCS_MASK_LEN bytes memcpy since it is not used
afterwards.

Signed-off-by: Karl Beldan <karl.beldan@rivierawaves.com>
---
 net/mac80211/rate.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
index dd88381..cedc2ef 100644
--- a/net/mac80211/rate.c
+++ b/net/mac80211/rate.c
@@ -436,7 +436,7 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata,
 	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(txrc->skb);
 	int i;
 	u32 mask;
-	u8 mcs_mask[IEEE80211_HT_MCS_MASK_LEN];
+	u8 *mcs_mask;
 
 	if (sta && test_sta_flag(sta, WLAN_STA_RATE_CONTROL)) {
 		ista = &sta->sta;
@@ -459,14 +459,13 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata,
 	 * default mask (allow all rates) is used to save some processing for
 	 * the common case.
 	 */
-	mask = sdata->rc_rateidx_mask[info->band];
-	memcpy(mcs_mask, sdata->rc_rateidx_mcs_mask[info->band],
-	       sizeof(mcs_mask));
+	mask = txrc->rate_idx_mask;
+	mcs_mask = txrc->rate_idx_mcs_mask;
 	if (mask != (1 << txrc->sband->n_bitrates) - 1) {
 		if (sta) {
 			/* Filter out rates that the STA does not support */
 			mask &= sta->sta.supp_rates[info->band];
-			for (i = 0; i < sizeof(mcs_mask); i++)
+			for (i = 0; i < sizeof(txrc->rate_idx_mcs_mask); i++)
 				mcs_mask[i] &= sta->sta.ht_cap.mcs.rx_mask[i];
 		}
 		/*
-- 
1.7.9.dirty


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [PATCH v3 2/2] mac80211: fix the check for mcs rates masking
  2013-03-04 22:28 [PATCH v3 1/2] mac80211: get the rates masks from the txrc in rate_control_get_rate Karl Beldan
@ 2013-03-04 22:28 ` Karl Beldan
  0 siblings, 0 replies; 2+ messages in thread
From: Karl Beldan @ 2013-03-04 22:28 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, Karl Beldan

From: Karl Beldan <karl.beldan@rivierawaves.com>

Currently the mcs bitrates mask rate_idx_mcs_mask is only applied when
the pre-ht bitrates mask rate_idx_mask of the same band differs from the
default mask.
Fix it by comparing the rate_idx_mcs_mask with the driver ht caps, and
update the comments accordingly.

Signed-off-by: Karl Beldan <karl.beldan@rivierawaves.com>
---
 net/mac80211/rate.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
index cedc2ef..94daf34 100644
--- a/net/mac80211/rate.c
+++ b/net/mac80211/rate.c
@@ -455,13 +455,15 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata,
 	ref->ops->get_rate(ref->priv, ista, priv_sta, txrc);
 
 	/*
-	 * Try to enforce the rateidx mask the user wanted. skip this if the
-	 * default mask (allow all rates) is used to save some processing for
-	 * the common case.
+	 * Try to enforce the rateidx masks the user wanted. Skip this if mask
+	 * is the default mask (allow all rates) and mcs_mask does not differ
+	 * from the driver ht caps to save some processing for the common case.
 	 */
 	mask = txrc->rate_idx_mask;
 	mcs_mask = txrc->rate_idx_mcs_mask;
-	if (mask != (1 << txrc->sband->n_bitrates) - 1) {
+	if (mask != (1 << txrc->sband->n_bitrates) - 1 ||
+	    memcmp(txrc->sband->ht_cap.mcs.rx_mask, txrc->rate_idx_mcs_mask,
+		   sizeof(txrc->rate_idx_mcs_mask))) {
 		if (sta) {
 			/* Filter out rates that the STA does not support */
 			mask &= sta->sta.supp_rates[info->band];
-- 
1.7.9.dirty


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-03-04 22:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-04 22:28 [PATCH v3 1/2] mac80211: get the rates masks from the txrc in rate_control_get_rate Karl Beldan
2013-03-04 22:28 ` [PATCH v3 2/2] mac80211: fix the check for mcs rates masking Karl Beldan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.