diff options
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 25 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-rx.c | 26 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl4965-base.c | 2 |
4 files changed, 28 insertions, 27 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index fe731918c2f4..2f254c4abdd5 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -384,31 +384,6 @@ void iwl4965_hwrate_to_tx_control(struct iwl_priv *priv, u32 rate_n_flags, | |||
384 | control->tx_rate_idx = rate_index; | 384 | control->tx_rate_idx = rate_index; |
385 | } | 385 | } |
386 | 386 | ||
387 | int iwl4965_hw_rxq_stop(struct iwl_priv *priv) | ||
388 | { | ||
389 | int rc; | ||
390 | unsigned long flags; | ||
391 | |||
392 | spin_lock_irqsave(&priv->lock, flags); | ||
393 | rc = iwl_grab_nic_access(priv); | ||
394 | if (rc) { | ||
395 | spin_unlock_irqrestore(&priv->lock, flags); | ||
396 | return rc; | ||
397 | } | ||
398 | |||
399 | /* stop Rx DMA */ | ||
400 | iwl_write_direct32(priv, FH_MEM_RCSR_CHNL0_CONFIG_REG, 0); | ||
401 | rc = iwl_poll_direct_bit(priv, FH_MEM_RSSR_RX_STATUS_REG, | ||
402 | (1 << 24), 1000); | ||
403 | if (rc < 0) | ||
404 | IWL_ERROR("Can't stop Rx DMA.\n"); | ||
405 | |||
406 | iwl_release_nic_access(priv); | ||
407 | spin_unlock_irqrestore(&priv->lock, flags); | ||
408 | |||
409 | return 0; | ||
410 | } | ||
411 | |||
412 | /* | 387 | /* |
413 | * EEPROM handlers | 388 | * EEPROM handlers |
414 | */ | 389 | */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index 3cefaaf95b22..5291f1a3aeb2 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h | |||
@@ -684,8 +684,8 @@ extern u8 iwl4965_sync_station(struct iwl_priv *priv, int sta_id, | |||
684 | ****************************************************************************/ | 684 | ****************************************************************************/ |
685 | extern void iwl4965_hw_setup_deferred_work(struct iwl_priv *priv); | 685 | extern void iwl4965_hw_setup_deferred_work(struct iwl_priv *priv); |
686 | extern void iwl4965_hw_cancel_deferred_work(struct iwl_priv *priv); | 686 | extern void iwl4965_hw_cancel_deferred_work(struct iwl_priv *priv); |
687 | extern int iwl4965_hw_rxq_stop(struct iwl_priv *priv); | ||
688 | extern int iwl4965_hw_set_hw_params(struct iwl_priv *priv); | 687 | extern int iwl4965_hw_set_hw_params(struct iwl_priv *priv); |
688 | extern int iwl_rxq_stop(struct iwl_priv *priv); | ||
689 | extern void iwl_txq_ctx_stop(struct iwl_priv *priv); | 689 | extern void iwl_txq_ctx_stop(struct iwl_priv *priv); |
690 | extern int iwl4965_hw_get_temperature(struct iwl_priv *priv); | 690 | extern int iwl4965_hw_get_temperature(struct iwl_priv *priv); |
691 | extern unsigned int iwl4965_hw_get_beacon_cmd(struct iwl_priv *priv, | 691 | extern unsigned int iwl4965_hw_get_beacon_cmd(struct iwl_priv *priv, |
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c index a2eb90d40b7e..ed63e5c76f3c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-rx.c +++ b/drivers/net/wireless/iwlwifi/iwl-rx.c | |||
@@ -420,3 +420,29 @@ int iwl_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq) | |||
420 | return 0; | 420 | return 0; |
421 | } | 421 | } |
422 | 422 | ||
423 | int iwl_rxq_stop(struct iwl_priv *priv) | ||
424 | { | ||
425 | int ret; | ||
426 | unsigned long flags; | ||
427 | |||
428 | spin_lock_irqsave(&priv->lock, flags); | ||
429 | ret = iwl_grab_nic_access(priv); | ||
430 | if (unlikely(ret)) { | ||
431 | spin_unlock_irqrestore(&priv->lock, flags); | ||
432 | return ret; | ||
433 | } | ||
434 | |||
435 | /* stop Rx DMA */ | ||
436 | iwl_write_direct32(priv, FH_MEM_RCSR_CHNL0_CONFIG_REG, 0); | ||
437 | ret = iwl_poll_direct_bit(priv, FH_MEM_RSSR_RX_STATUS_REG, | ||
438 | (1 << 24), 1000); | ||
439 | if (ret < 0) | ||
440 | IWL_ERROR("Can't stop Rx DMA.\n"); | ||
441 | |||
442 | iwl_release_nic_access(priv); | ||
443 | spin_unlock_irqrestore(&priv->lock, flags); | ||
444 | |||
445 | return 0; | ||
446 | } | ||
447 | EXPORT_SYMBOL(iwl_rxq_stop); | ||
448 | |||
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index 2652f5ff5103..985876b3eebb 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c | |||
@@ -3405,7 +3405,7 @@ static void __iwl4965_down(struct iwl_priv *priv) | |||
3405 | spin_unlock_irqrestore(&priv->lock, flags); | 3405 | spin_unlock_irqrestore(&priv->lock, flags); |
3406 | 3406 | ||
3407 | iwl_txq_ctx_stop(priv); | 3407 | iwl_txq_ctx_stop(priv); |
3408 | iwl4965_hw_rxq_stop(priv); | 3408 | iwl_rxq_stop(priv); |
3409 | 3409 | ||
3410 | spin_lock_irqsave(&priv->lock, flags); | 3410 | spin_lock_irqsave(&priv->lock, flags); |
3411 | if (!iwl_grab_nic_access(priv)) { | 3411 | if (!iwl_grab_nic_access(priv)) { |