| From 50e2a30cf6fcaeb2d27360ba614dd169a10041c5 Mon Sep 17 00:00:00 2001 |
| From: Johannes Berg <johannes.berg@intel.com> |
| Date: Sun, 5 Aug 2012 18:31:46 +0200 |
| Subject: iwlwifi: disable greenfield transmissions as a workaround |
| |
| From: Johannes Berg <johannes.berg@intel.com> |
| |
| commit 50e2a30cf6fcaeb2d27360ba614dd169a10041c5 upstream. |
| |
| There's a bug that causes the rate scaling to get stuck |
| when it has to use single-stream rates with a peer that |
| can do GF and SGI; the two are incompatible so we can't |
| use them together, but that causes the algorithm to not |
| work at all, it always rejects updates. |
| |
| Disable greenfield for now to prevent that problem. |
| |
| Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> |
| Tested-by: Cesar Eduardo Barros <cesarb@cesarb.net> |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 13 ++++++++----- |
| 1 file changed, 8 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c |
| +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c |
| @@ -709,11 +709,14 @@ static int rs_toggle_antenna(u32 valid_a |
| */ |
| static bool rs_use_green(struct ieee80211_sta *sta) |
| { |
| - struct iwl_station_priv *sta_priv = (void *)sta->drv_priv; |
| - struct iwl_rxon_context *ctx = sta_priv->ctx; |
| - |
| - return (sta->ht_cap.cap & IEEE80211_HT_CAP_GRN_FLD) && |
| - !(ctx->ht.non_gf_sta_present); |
| + /* |
| + * There's a bug somewhere in this code that causes the |
| + * scaling to get stuck because GF+SGI can't be combined |
| + * in SISO rates. Until we find that bug, disable GF, it |
| + * has only limited benefit and we still interoperate with |
| + * GF APs since we can always receive GF transmissions. |
| + */ |
| + return false; |
| } |
| |
| /** |