Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b124c31 authored by Gregory Greenman's avatar Gregory Greenman Committed by John W. Linville
Browse files

iwlwifi: fix STATUS_EXIT_PENDING is not set on pci_remove



This patch sets STATUS_EXIT_PENDING on pci_remove. Otherwise
iwl4965_down may fail to uninitialize the driver.

Signed-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Signed-off-by: default avatarMohamed Abbas <mohamed.abbas@intel.com>
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarZhu Yi <yi.zhu@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent d535311e
Loading
Loading
Loading
Loading
+7 −4
Original line number Original line Diff line number Diff line
@@ -4372,14 +4372,17 @@ static void __devexit iwl4965_pci_remove(struct pci_dev *pdev)
	iwl_dbgfs_unregister(priv);
	iwl_dbgfs_unregister(priv);
	sysfs_remove_group(&pdev->dev.kobj, &iwl4965_attribute_group);
	sysfs_remove_group(&pdev->dev.kobj, &iwl4965_attribute_group);


	/* ieee80211_unregister_hw call wil cause iwl4965_mac_stop to
	 * to be called and iwl4965_down since we are removing the device
	 * we need to set STATUS_EXIT_PENDING bit.
	 */
	set_bit(STATUS_EXIT_PENDING, &priv->status);
	if (priv->mac80211_registered) {
	if (priv->mac80211_registered) {
		ieee80211_unregister_hw(priv->hw);
		ieee80211_unregister_hw(priv->hw);
		priv->mac80211_registered = 0;
		priv->mac80211_registered = 0;
	}
	} else {

	set_bit(STATUS_EXIT_PENDING, &priv->status);

		iwl4965_down(priv);
		iwl4965_down(priv);
	}


	/* make sure we flush any pending irq or
	/* make sure we flush any pending irq or
	 * tasklet for the driver
	 * tasklet for the driver