diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-5000.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-5000.c | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c index d6074522c446..a94cd362fef5 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000.c +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c | |||
@@ -662,10 +662,10 @@ static int iwl5000_alive_notify(struct iwl_priv *priv) | |||
662 | } | 662 | } |
663 | 663 | ||
664 | iwl_write_prph(priv, IWL50_SCD_INTERRUPT_MASK, | 664 | iwl_write_prph(priv, IWL50_SCD_INTERRUPT_MASK, |
665 | (1 << priv->hw_params.max_txq_num) - 1); | 665 | IWL_MASK(0, priv->hw_params.max_txq_num)); |
666 | 666 | ||
667 | iwl_write_prph(priv, IWL50_SCD_TXFACT, | 667 | /* Activate all Tx DMA/FIFO channels */ |
668 | SCD_TXFACT_REG_TXFIFO_MASK(0, 7)); | 668 | priv->cfg->ops->lib->txq_set_sched(priv, IWL_MASK(0, 7)); |
669 | 669 | ||
670 | iwl5000_set_wr_ptrs(priv, IWL_CMD_QUEUE_NUM, 0); | 670 | iwl5000_set_wr_ptrs(priv, IWL_CMD_QUEUE_NUM, 0); |
671 | /* map qos queues to fifos one-to-one */ | 671 | /* map qos queues to fifos one-to-one */ |
@@ -839,25 +839,13 @@ static u16 iwl5000_build_addsta_hcmd(const struct iwl_addsta_cmd *cmd, u8 *data) | |||
839 | } | 839 | } |
840 | 840 | ||
841 | 841 | ||
842 | static int iwl5000_disable_tx_fifo(struct iwl_priv *priv) | 842 | /* |
843 | * Activate/Deactivat Tx DMA/FIFO channels according tx fifos mask | ||
844 | * must be called under priv->lock and mac access | ||
845 | */ | ||
846 | static void iwl5000_txq_set_sched(struct iwl_priv *priv, u32 mask) | ||
843 | { | 847 | { |
844 | unsigned long flags; | 848 | iwl_write_prph(priv, IWL50_SCD_TXFACT, mask); |
845 | int ret; | ||
846 | |||
847 | spin_lock_irqsave(&priv->lock, flags); | ||
848 | |||
849 | ret = iwl_grab_nic_access(priv); | ||
850 | if (unlikely(ret)) { | ||
851 | IWL_ERROR("Tx fifo reset failed"); | ||
852 | spin_unlock_irqrestore(&priv->lock, flags); | ||
853 | return ret; | ||
854 | } | ||
855 | |||
856 | iwl_write_prph(priv, IWL50_SCD_TXFACT, 0); | ||
857 | iwl_release_nic_access(priv); | ||
858 | spin_unlock_irqrestore(&priv->lock, flags); | ||
859 | |||
860 | return 0; | ||
861 | } | 849 | } |
862 | 850 | ||
863 | /* Currently 5000 is the supperset of everything */ | 851 | /* Currently 5000 is the supperset of everything */ |
@@ -894,7 +882,7 @@ static struct iwl_lib_ops iwl5000_lib = { | |||
894 | .free_shared_mem = iwl5000_free_shared_mem, | 882 | .free_shared_mem = iwl5000_free_shared_mem, |
895 | .shared_mem_rx_idx = iwl5000_shared_mem_rx_idx, | 883 | .shared_mem_rx_idx = iwl5000_shared_mem_rx_idx, |
896 | .txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl, | 884 | .txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl, |
897 | .disable_tx_fifo = iwl5000_disable_tx_fifo, | 885 | .txq_set_sched = iwl5000_txq_set_sched, |
898 | .rx_handler_setup = iwl5000_rx_handler_setup, | 886 | .rx_handler_setup = iwl5000_rx_handler_setup, |
899 | .is_valid_rtc_data_addr = iwl5000_hw_valid_rtc_data_addr, | 887 | .is_valid_rtc_data_addr = iwl5000_hw_valid_rtc_data_addr, |
900 | .load_ucode = iwl5000_load_ucode, | 888 | .load_ucode = iwl5000_load_ucode, |