iwlwifi: pcie: Set scheduler to work on auto mode
authorHaim Dreyfuss <haim.dreyfuss@intel.com>
Sun, 14 Jun 2015 08:17:07 +0000 (11:17 +0300)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 4 Aug 2015 07:11:39 +0000 (10:11 +0300)
During NIC initialization shared HW is reset and this disables the
scheduler. Some HW platforms do not activate the scheduler after it.
Consequently all HCMD sent by the driver stay at the queues which cause
to queue stuck.
Set the scheduler to work on auto active mode so it would be activated upon
change over one of the queues' write pointer.

Signed-off-by: Haim Dreyfuss <haim.dreyfuss@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/iwl-prph.h
drivers/net/wireless/iwlwifi/pcie/tx.c

index 5af1c776d2d4381fdd01e0044c4eeb5108236a18..a8469041af094d365c79bfcc687ef14695400740 100644 (file)
 #define SCD_QUEUE_CTX_REG2_FRAME_LIMIT_POS     (16)
 #define SCD_QUEUE_CTX_REG2_FRAME_LIMIT_MSK     (0x007F0000)
 #define SCD_GP_CTRL_ENABLE_31_QUEUES           BIT(0)
+#define SCD_GP_CTRL_AUTO_ACTIVE_MODE           BIT(18)
 
 /* Context Data */
 #define SCD_CONTEXT_MEM_LOWER_BOUND    (SCD_MEM_LOWER_BOUND + 0x600)
index 2b86c2135de36f627b397add88628bc47aa37271..d711f0b8b62f3b2450f0f86082a4c2886ce3a168 100644 (file)
@@ -915,6 +915,7 @@ int iwl_pcie_tx_init(struct iwl_trans *trans)
                }
        }
 
+       iwl_set_bits_prph(trans, SCD_GP_CTRL, SCD_GP_CTRL_AUTO_ACTIVE_MODE);
        if (trans->cfg->base_params->num_of_queues > 20)
                iwl_set_bits_prph(trans, SCD_GP_CTRL,
                                  SCD_GP_CTRL_ENABLE_31_QUEUES);