|
@@ -86,6 +86,7 @@
|
|
|
#include "time-event.h"
|
|
|
#include "fw-api.h"
|
|
|
#include "fw/api/scan.h"
|
|
|
+#include "fw/acpi.h"
|
|
|
|
|
|
#define DRV_DESCRIPTION "The new Intel(R) wireless AGN driver for Linux"
|
|
|
MODULE_DESCRIPTION(DRV_DESCRIPTION);
|
|
@@ -488,18 +489,21 @@ static const struct iwl_hcmd_arr iwl_mvm_groups[] = {
|
|
|
static void iwl_mvm_async_handlers_wk(struct work_struct *wk);
|
|
|
static void iwl_mvm_d0i3_exit_work(struct work_struct *wk);
|
|
|
|
|
|
-static u32 calc_min_backoff(struct iwl_trans *trans, const struct iwl_cfg *cfg)
|
|
|
+static u32 iwl_mvm_min_backoff(struct iwl_mvm *mvm)
|
|
|
{
|
|
|
- const struct iwl_pwr_tx_backoff *pwr_tx_backoff = cfg->pwr_tx_backoffs;
|
|
|
+ const struct iwl_pwr_tx_backoff *backoff = mvm->cfg->pwr_tx_backoffs;
|
|
|
+ u64 dflt_pwr_limit;
|
|
|
|
|
|
- if (!pwr_tx_backoff)
|
|
|
+ if (!backoff)
|
|
|
return 0;
|
|
|
|
|
|
- while (pwr_tx_backoff->pwr) {
|
|
|
- if (trans->dflt_pwr_limit >= pwr_tx_backoff->pwr)
|
|
|
- return pwr_tx_backoff->backoff;
|
|
|
+ dflt_pwr_limit = iwl_acpi_get_pwr_limit(mvm->dev);
|
|
|
|
|
|
- pwr_tx_backoff++;
|
|
|
+ while (backoff->pwr) {
|
|
|
+ if (dflt_pwr_limit >= backoff->pwr)
|
|
|
+ return backoff->backoff;
|
|
|
+
|
|
|
+ backoff++;
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
@@ -769,7 +773,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
|
|
|
goto out_free;
|
|
|
mvm->hw_registered = true;
|
|
|
|
|
|
- min_backoff = calc_min_backoff(trans, cfg);
|
|
|
+ min_backoff = iwl_mvm_min_backoff(mvm);
|
|
|
iwl_mvm_thermal_initialize(mvm, min_backoff);
|
|
|
|
|
|
err = iwl_mvm_dbgfs_register(mvm, dbgfs_dir);
|