diff options
author | Michael Wu <flamingice@sourmilk.net> | 2007-09-24 18:10:25 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:53:10 -0400 |
commit | ce1234d299f3823ea07019c0f7b7b0bcb81ee7a0 (patch) | |
tree | f8614a31570dbbe832541afcf426555eb7154eaa /drivers/net/wireless/adm8211.c | |
parent | d703e29a88c91f015aa691a195e8fd4426c4ec73 (diff) |
[PATCH] adm8211: Detect interface up/down in suspend/resume hooks correctly
Interface up/down detection was incorrectly changed during the filter API
update.
Signed-off-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/adm8211.c')
-rw-r--r-- | drivers/net/wireless/adm8211.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/wireless/adm8211.c b/drivers/net/wireless/adm8211.c index 95c8315d71ec..e4fdadb52503 100644 --- a/drivers/net/wireless/adm8211.c +++ b/drivers/net/wireless/adm8211.c | |||
@@ -1540,6 +1540,7 @@ static int adm8211_start(struct ieee80211_hw *dev) | |||
1540 | ADM8211_CSR_WRITE(IER, ADM8211_IER_NIE | ADM8211_IER_AIE | | 1540 | ADM8211_CSR_WRITE(IER, ADM8211_IER_NIE | ADM8211_IER_AIE | |
1541 | ADM8211_IER_RCIE | ADM8211_IER_TCIE | | 1541 | ADM8211_IER_RCIE | ADM8211_IER_TCIE | |
1542 | ADM8211_IER_TDUIE | ADM8211_IER_GPTIE); | 1542 | ADM8211_IER_TDUIE | ADM8211_IER_GPTIE); |
1543 | priv->mode = IEEE80211_IF_TYPE_MNTR; | ||
1543 | adm8211_update_mode(dev); | 1544 | adm8211_update_mode(dev); |
1544 | ADM8211_CSR_WRITE(RDR, 0); | 1545 | ADM8211_CSR_WRITE(RDR, 0); |
1545 | 1546 | ||
@@ -1554,6 +1555,7 @@ static void adm8211_stop(struct ieee80211_hw *dev) | |||
1554 | { | 1555 | { |
1555 | struct adm8211_priv *priv = dev->priv; | 1556 | struct adm8211_priv *priv = dev->priv; |
1556 | 1557 | ||
1558 | priv->mode = IEEE80211_IF_TYPE_MGMT; | ||
1557 | priv->nar = 0; | 1559 | priv->nar = 0; |
1558 | ADM8211_CSR_WRITE(NAR, 0); | 1560 | ADM8211_CSR_WRITE(NAR, 0); |
1559 | ADM8211_CSR_WRITE(IER, 0); | 1561 | ADM8211_CSR_WRITE(IER, 0); |
@@ -1896,7 +1898,7 @@ static int __devinit adm8211_probe(struct pci_dev *pdev, | |||
1896 | priv->tx_power = 0x40; | 1898 | priv->tx_power = 0x40; |
1897 | priv->lpf_cutoff = 0xFF; | 1899 | priv->lpf_cutoff = 0xFF; |
1898 | priv->lnags_threshold = 0xFF; | 1900 | priv->lnags_threshold = 0xFF; |
1899 | priv->mode = IEEE80211_IF_TYPE_MNTR; | 1901 | priv->mode = IEEE80211_IF_TYPE_MGMT; |
1900 | 1902 | ||
1901 | /* Power-on issue. EEPROM won't read correctly without */ | 1903 | /* Power-on issue. EEPROM won't read correctly without */ |
1902 | if (pdev->revision >= ADM8211_REV_BA) { | 1904 | if (pdev->revision >= ADM8211_REV_BA) { |
@@ -1991,7 +1993,7 @@ static int adm8211_suspend(struct pci_dev *pdev, pm_message_t state) | |||
1991 | struct ieee80211_hw *dev = pci_get_drvdata(pdev); | 1993 | struct ieee80211_hw *dev = pci_get_drvdata(pdev); |
1992 | struct adm8211_priv *priv = dev->priv; | 1994 | struct adm8211_priv *priv = dev->priv; |
1993 | 1995 | ||
1994 | if (priv->mode != IEEE80211_IF_TYPE_MNTR) { | 1996 | if (priv->mode != IEEE80211_IF_TYPE_MGMT) { |
1995 | ieee80211_stop_queues(dev); | 1997 | ieee80211_stop_queues(dev); |
1996 | adm8211_stop(dev); | 1998 | adm8211_stop(dev); |
1997 | } | 1999 | } |
@@ -2009,7 +2011,7 @@ static int adm8211_resume(struct pci_dev *pdev) | |||
2009 | pci_set_power_state(pdev, PCI_D0); | 2011 | pci_set_power_state(pdev, PCI_D0); |
2010 | pci_restore_state(pdev); | 2012 | pci_restore_state(pdev); |
2011 | 2013 | ||
2012 | if (priv->mode != IEEE80211_IF_TYPE_MNTR) { | 2014 | if (priv->mode != IEEE80211_IF_TYPE_MGMT) { |
2013 | adm8211_start(dev); | 2015 | adm8211_start(dev); |
2014 | ieee80211_start_queues(dev); | 2016 | ieee80211_start_queues(dev); |
2015 | } | 2017 | } |