trans_cfg.no_reclaim_cmds = no_reclaim_cmds;
        trans_cfg.n_no_reclaim_cmds = ARRAY_SIZE(no_reclaim_cmds);
        trans_cfg.rx_buf_size_8k = iwlwifi_mod_params.amsdu_size_8K;
-       if (!iwlwifi_mod_params.wd_disable)
-               trans_cfg.queue_watchdog_timeout =
-                       priv->cfg->base_params->wd_timeout;
-       else
-               trans_cfg.queue_watchdog_timeout = IWL_WATCHDOG_DISABLED;
+       trans_cfg.queue_watchdog_timeout = IWL_WATCHDOG_DISABLED;
        trans_cfg.command_names = iwl_dvm_cmd_strings;
        trans_cfg.cmd_fifo = IWLAGN_CMD_FIFO_NUM;
 
 
        .restart_fw = true,
        .bt_coex_active = true,
        .power_level = IWL_POWER_INDEX_1,
-       .wd_disable = true,
        .d0i3_disable = true,
 #ifndef CONFIG_IWLWIFI_UAPSD
        .uapsd_disable = true,
 MODULE_PARM_DESC(antenna_coupling,
                 "specify antenna coupling in dB (default: 0 dB)");
 
-module_param_named(wd_disable, iwlwifi_mod_params.wd_disable, int, S_IRUGO);
-MODULE_PARM_DESC(wd_disable,
-               "Disable stuck queue watchdog timer 0=system default, 1=disable (default: 1)");
-
 module_param_named(nvm_file, iwlwifi_mod_params.nvm_file, charp, S_IRUGO);
 MODULE_PARM_DESC(nvm_file, "NVM file name");
 
 
  *     use IWL_[DIS,EN]ABLE_HT_* constants
  * @amsdu_size_8K: enable 8K amsdu size, default = 0
  * @restart_fw: restart firmware, default = 1
- * @wd_disable: disable stuck queue check, default = 1
  * @bt_coex_active: enable bt coex, default = true
  * @led_mode: system default, default = 0
  * @power_save: enable power save, default = false
        unsigned int disable_11n;
        int amsdu_size_8K;
        bool restart_fw;
-       int  wd_disable;
        bool bt_coex_active;
        int led_mode;
        bool power_save;
 
  *     We will register to mac80211 to have testmode working. The NIC must not
  *     be up'ed after the INIT fw asserted. This is useful to be able to use
  *     proprietary tools over testmode to debug the INIT fw.
+ * @tfd_q_hang_detect: enabled the detection of hung transmit queues
  * @power_scheme: CAM(Continuous Active Mode)-1, BPS(Balanced Power
  *     Save)-2(default), LP(Low Power)-3
  */
 struct iwl_mvm_mod_params {
        bool init_dbg;
+       bool tfd_q_hang_detect;
        int power_scheme;
 };
 extern struct iwl_mvm_mod_params iwlmvm_mod_params;
 
 
 struct iwl_mvm_mod_params iwlmvm_mod_params = {
        .power_scheme = IWL_POWER_SCHEME_BPS,
+       .tfd_q_hang_detect = true
        /* rest of fields are 0 by default */
 };
 
 module_param_named(power_scheme, iwlmvm_mod_params.power_scheme, int, S_IRUGO);
 MODULE_PARM_DESC(power_scheme,
                 "power management scheme: 1-active, 2-balanced, 3-low power, default: 2");
+module_param_named(tfd_q_hang_detect, iwlmvm_mod_params.tfd_q_hang_detect,
+                  bool, S_IRUGO);
+MODULE_PARM_DESC(tfd_q_hang_detect,
+                "TFD queues hang detection (default: true");
 
 /*
  * module init and exit functions
        if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_DW_BC_TABLE)
                trans_cfg.bc_table_dword = true;
 
-       if (!iwlwifi_mod_params.wd_disable)
+       if (iwlmvm_mod_params.tfd_q_hang_detect)
                trans_cfg.queue_watchdog_timeout = cfg->base_params->wd_timeout;
-       else
-               trans_cfg.queue_watchdog_timeout = IWL_WATCHDOG_DISABLED;
 
        trans_cfg.command_names = iwl_mvm_cmd_strings;
 
 
 
        /* start timer if queue currently empty */
        if (q->read_ptr == q->write_ptr) {
-               if (txq->need_update && trans_pcie->wd_timeout)
+               if (trans_pcie->wd_timeout)
                        mod_timer(&txq->stuck_timer,
                                  jiffies + trans_pcie->wd_timeout);
                IWL_DEBUG_RPM(trans, "Q: %d first tx - take ref\n", q->id);