diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-03-07 12:52:16 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-03-08 13:59:47 -0500 |
commit | e755f882b7e72c48da820acc24196532977cfd07 (patch) | |
tree | 43fbd47dce75f6c08908f2b4c14e4c72ab565390 /drivers/net/wireless/iwlwifi/iwl-ucode.c | |
parent | ea886a6014024d027fa207b8765e46d746cd2a18 (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.c | 6 |
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 | ||
317 | static int iwl_alive_notify(struct iwl_priv *priv) | 317 | static 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) |