aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-ucode.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-03-07 12:52:16 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-03-08 13:59:47 -0500
commite755f882b7e72c48da820acc24196532977cfd07 (patch)
tree43fbd47dce75f6c08908f2b4c14e4c72ab565390 /drivers/net/wireless/iwlwifi/iwl-ucode.c
parentea886a6014024d027fa207b8765e46d746cd2a18 (diff)
iwlwifi: redesign PASSIVE_NO_RX workaround
The PASSIVE_NO_RX workaround currently crosses through the op_mode and transport layers, which is a bit odd. This also isn't necessary, if the transport simply reports when queues are full (or no longer full) the op_mode can keep track of this state, and report to mac80211 only what *it* thinks is appropriate. What is appropriate can then be based on whether queues should be stopped to wait for RX or not. This significantly simplifies the transport API, it no longer needs to expose anything to stop a queue, nor to wake "any" queue, this can all be handled in the upper layer completely. Also simplify the handling to not be dependent on the context, that makes little sense as the queues are shared and both contexts have to be on the same channel anyway. Signed-off-by: Johannes Berg <johannes.berg@intel.com> 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/net/wireless/iwlwifi/iwl-ucode.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-ucode.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-ucode.c b/drivers/net/wireless/iwlwifi/iwl-ucode.c
index 8267dbe869d5..404fd8e7958b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-ucode.c
+++ b/drivers/net/wireless/iwlwifi/iwl-ucode.c
@@ -316,7 +316,6 @@ int iwl_send_bt_env(struct iwl_priv *priv, u8 action, u8 type)
316 316
317static int iwl_alive_notify(struct iwl_priv *priv) 317static int iwl_alive_notify(struct iwl_priv *priv)
318{ 318{
319 struct iwl_rxon_context *ctx;
320 int ret; 319 int ret;
321 320
322 if (!priv->tx_cmd_pool) 321 if (!priv->tx_cmd_pool)
@@ -329,8 +328,9 @@ static int iwl_alive_notify(struct iwl_priv *priv)
329 return -ENOMEM; 328 return -ENOMEM;
330 329
331 iwl_trans_fw_alive(trans(priv)); 330 iwl_trans_fw_alive(trans(priv));
332 for_each_context(priv, ctx) 331
333 ctx->last_tx_rejected = false; 332 priv->passive_no_rx = false;
333 priv->transport_queue_stop = 0;
334 334
335 ret = iwl_send_wimax_coex(priv); 335 ret = iwl_send_wimax_coex(priv);
336 if (ret) 336 if (ret)