diff options
author | Liad Kaufman <liad.kaufman@intel.com> | 2017-03-16 13:00:59 +0200 |
---|---|---|
committer | Luca Coelho <luciano.coelho@intel.com> | 2017-06-05 23:29:32 +0300 |
commit | de8ba41b5e5002e28756963df311246485c330d5 (patch) | |
tree | 2457839f1e2ee771e2666cce23a4aaac17488aa8 /drivers/net/wireless/intel/iwlwifi/mvm/led.c | |
parent | 1247070d4763cf0dc8bd7b313d606941c6464e69 (diff) | |
download | linux-de8ba41b5e5002e28756963df311246485c330d5.tar.gz linux-de8ba41b5e5002e28756963df311246485c330d5.tar.bz2 linux-de8ba41b5e5002e28756963df311246485c330d5.zip |
iwlwifi: mvm: support init flow debugging
In case an assert happens on init flow, the current
driver powers down the NIC, except if iwlmvm modparam
init_dbg=1, and only on very specific flows.
Extend this capability to cover most failure cases
by keeping track of what init configurations have been
completed. This way, we can allow NOT powering down
the NIC, while making sure that when the driver is
removed we don't try to free resources that haven't
been allocated. (This can result in a kernel panic.)
Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/led.c')
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/led.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/led.c b/drivers/net/wireless/intel/iwlwifi/mvm/led.c index 1e51fbe95f7c..3cac4278a5fd 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/led.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/led.c @@ -123,14 +123,17 @@ int iwl_mvm_leds_init(struct iwl_mvm *mvm) return ret; } + mvm->init_status |= IWL_MVM_INIT_STATUS_LEDS_INIT_COMPLETE; return 0; } void iwl_mvm_leds_exit(struct iwl_mvm *mvm) { - if (iwlwifi_mod_params.led_mode == IWL_LED_DISABLE) + if (iwlwifi_mod_params.led_mode == IWL_LED_DISABLE || + !(mvm->init_status & IWL_MVM_INIT_STATUS_LEDS_INIT_COMPLETE)) return; led_classdev_unregister(&mvm->led); kfree(mvm->led.name); + mvm->init_status &= ~IWL_MVM_INIT_STATUS_LEDS_INIT_COMPLETE; } |