diff options
author | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2011-06-03 10:54:13 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-06-03 15:16:36 -0400 |
commit | 15b3f3b006b42a678523cad989bfd60b76bf4403 (patch) | |
tree | 826995269c2db9df30393689b8138f1c3dfb80bc /drivers | |
parent | 88e9ba76bf906d8106d5f64856eba6e6d6777003 (diff) |
iwlagn: set smps mode after assoc for 1000 device
For some timing reason, 1000 device having problem to kick-in to aggregation
without sending rxon assoc command. This is a W/A until find the real reason
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-1000.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.h | 5 |
3 files changed, 14 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c index 99409501ad4f..7aa240e6ba1c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-1000.c +++ b/drivers/net/wireless/iwlwifi/iwl-1000.c | |||
@@ -222,6 +222,7 @@ static struct iwl_base_params iwl1000_base_params = { | |||
222 | static struct iwl_ht_params iwl1000_ht_params = { | 222 | static struct iwl_ht_params iwl1000_ht_params = { |
223 | .ht_greenfield_support = true, | 223 | .ht_greenfield_support = true, |
224 | .use_rts_for_aggregation = true, /* use rts/cts protection */ | 224 | .use_rts_for_aggregation = true, /* use rts/cts protection */ |
225 | .smps_mode = IEEE80211_SMPS_STATIC, | ||
225 | }; | 226 | }; |
226 | 227 | ||
227 | #define IWL_DEVICE_1000 \ | 228 | #define IWL_DEVICE_1000 \ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c index afb2f202afb9..5f562d91c2e7 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | |||
@@ -291,6 +291,12 @@ static int iwlagn_rxon_connect(struct iwl_priv *priv, | |||
291 | IWL_ERR(priv, "Error sending TX power (%d)\n", ret); | 291 | IWL_ERR(priv, "Error sending TX power (%d)\n", ret); |
292 | return ret; | 292 | return ret; |
293 | } | 293 | } |
294 | |||
295 | if ((ctx->vif && ctx->vif->type == NL80211_IFTYPE_STATION) && | ||
296 | priv->cfg->ht_params->smps_mode) | ||
297 | ieee80211_request_smps(ctx->vif, | ||
298 | priv->cfg->ht_params->smps_mode); | ||
299 | |||
294 | return 0; | 300 | return 0; |
295 | } | 301 | } |
296 | 302 | ||
@@ -395,6 +401,10 @@ int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx) | |||
395 | * do it now if after settings changed. | 401 | * do it now if after settings changed. |
396 | */ | 402 | */ |
397 | iwl_set_tx_power(priv, priv->tx_power_next, false); | 403 | iwl_set_tx_power(priv, priv->tx_power_next, false); |
404 | |||
405 | /* make sure we are in the right PS state */ | ||
406 | iwl_power_update_mode(priv, true); | ||
407 | |||
398 | return 0; | 408 | return 0; |
399 | } | 409 | } |
400 | 410 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h index a87b54fb9e7d..e430a4fc8c59 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.h +++ b/drivers/net/wireless/iwlwifi/iwl-core.h | |||
@@ -224,7 +224,7 @@ struct iwl_base_params { | |||
224 | * @ampdu_factor: Maximum A-MPDU length factor | 224 | * @ampdu_factor: Maximum A-MPDU length factor |
225 | * @ampdu_density: Minimum A-MPDU spacing | 225 | * @ampdu_density: Minimum A-MPDU spacing |
226 | * @bt_sco_disable: uCode should not response to BT in SCO/ESCO mode | 226 | * @bt_sco_disable: uCode should not response to BT in SCO/ESCO mode |
227 | */ | 227 | */ |
228 | struct iwl_bt_params { | 228 | struct iwl_bt_params { |
229 | bool advanced_bt_coexist; | 229 | bool advanced_bt_coexist; |
230 | u8 bt_init_traffic_load; | 230 | u8 bt_init_traffic_load; |
@@ -237,10 +237,11 @@ struct iwl_bt_params { | |||
237 | }; | 237 | }; |
238 | /* | 238 | /* |
239 | * @use_rts_for_aggregation: use rts/cts protection for HT traffic | 239 | * @use_rts_for_aggregation: use rts/cts protection for HT traffic |
240 | */ | 240 | */ |
241 | struct iwl_ht_params { | 241 | struct iwl_ht_params { |
242 | const bool ht_greenfield_support; /* if used set to true */ | 242 | const bool ht_greenfield_support; /* if used set to true */ |
243 | bool use_rts_for_aggregation; | 243 | bool use_rts_for_aggregation; |
244 | enum ieee80211_smps_mode smps_mode; | ||
244 | }; | 245 | }; |
245 | 246 | ||
246 | /** | 247 | /** |