diff options
| author | David S. Miller <davem@davemloft.net> | 2012-01-17 12:11:52 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2012-01-17 12:11:52 -0500 |
| commit | 4144cb2ade46d97b9c41682fd2e9064a59f23a98 (patch) | |
| tree | 4b5ef937b4d0dcede6b1669f03c3b6dccf57d5bc /drivers | |
| parent | 59f608d84f937cb5e2fd3a0b9f848f200d47ba85 (diff) | |
| parent | 604c4ef1c453a1b2ea2cdf04d2b49afec421ebfa (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/bcma/bcma_private.h | 1 | ||||
| -rw-r--r-- | drivers/bcma/host_pci.c | 43 | ||||
| -rw-r--r-- | drivers/bcma/main.c | 24 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_mac.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/mac.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/b43/main.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c | 40 | ||||
| -rw-r--r-- | drivers/net/wireless/ipw2x00/ipw2200.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-scan.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/mwl8k.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2800pci.c | 28 |
12 files changed, 71 insertions, 92 deletions
diff --git a/drivers/bcma/bcma_private.h b/drivers/bcma/bcma_private.h index fda56bde36b8..0def898a1d15 100644 --- a/drivers/bcma/bcma_private.h +++ b/drivers/bcma/bcma_private.h | |||
| @@ -19,6 +19,7 @@ int __init bcma_bus_early_register(struct bcma_bus *bus, | |||
| 19 | struct bcma_device *core_cc, | 19 | struct bcma_device *core_cc, |
| 20 | struct bcma_device *core_mips); | 20 | struct bcma_device *core_mips); |
| 21 | #ifdef CONFIG_PM | 21 | #ifdef CONFIG_PM |
| 22 | int bcma_bus_suspend(struct bcma_bus *bus); | ||
| 22 | int bcma_bus_resume(struct bcma_bus *bus); | 23 | int bcma_bus_resume(struct bcma_bus *bus); |
| 23 | #endif | 24 | #endif |
| 24 | 25 | ||
diff --git a/drivers/bcma/host_pci.c b/drivers/bcma/host_pci.c index 443b83a2fd7a..f59244e33971 100644 --- a/drivers/bcma/host_pci.c +++ b/drivers/bcma/host_pci.c | |||
| @@ -235,38 +235,32 @@ static void bcma_host_pci_remove(struct pci_dev *dev) | |||
| 235 | } | 235 | } |
| 236 | 236 | ||
| 237 | #ifdef CONFIG_PM | 237 | #ifdef CONFIG_PM |
| 238 | static int bcma_host_pci_suspend(struct pci_dev *dev, pm_message_t state) | 238 | static int bcma_host_pci_suspend(struct device *dev) |
| 239 | { | 239 | { |
| 240 | /* Host specific */ | 240 | struct pci_dev *pdev = to_pci_dev(dev); |
| 241 | pci_save_state(dev); | 241 | struct bcma_bus *bus = pci_get_drvdata(pdev); |
| 242 | pci_disable_device(dev); | ||
| 243 | pci_set_power_state(dev, pci_choose_state(dev, state)); | ||
| 244 | 242 | ||
| 245 | return 0; | 243 | bus->mapped_core = NULL; |
| 244 | |||
| 245 | return bcma_bus_suspend(bus); | ||
| 246 | } | 246 | } |
| 247 | 247 | ||
| 248 | static int bcma_host_pci_resume(struct pci_dev *dev) | 248 | static int bcma_host_pci_resume(struct device *dev) |
| 249 | { | 249 | { |
| 250 | struct bcma_bus *bus = pci_get_drvdata(dev); | 250 | struct pci_dev *pdev = to_pci_dev(dev); |
| 251 | int err; | 251 | struct bcma_bus *bus = pci_get_drvdata(pdev); |
| 252 | 252 | ||
| 253 | /* Host specific */ | 253 | return bcma_bus_resume(bus); |
| 254 | pci_set_power_state(dev, 0); | 254 | } |
| 255 | err = pci_enable_device(dev); | ||
| 256 | if (err) | ||
| 257 | return err; | ||
| 258 | pci_restore_state(dev); | ||
| 259 | 255 | ||
| 260 | /* Bus specific */ | 256 | static SIMPLE_DEV_PM_OPS(bcma_pm_ops, bcma_host_pci_suspend, |
| 261 | err = bcma_bus_resume(bus); | 257 | bcma_host_pci_resume); |
| 262 | if (err) | 258 | #define BCMA_PM_OPS (&bcma_pm_ops) |
| 263 | return err; | ||
| 264 | 259 | ||
| 265 | return 0; | ||
| 266 | } | ||
| 267 | #else /* CONFIG_PM */ | 260 | #else /* CONFIG_PM */ |
| 268 | # define bcma_host_pci_suspend NULL | 261 | |
| 269 | # define bcma_host_pci_resume NULL | 262 | #define BCMA_PM_OPS NULL |
| 263 | |||
| 270 | #endif /* CONFIG_PM */ | 264 | #endif /* CONFIG_PM */ |
| 271 | 265 | ||
| 272 | static DEFINE_PCI_DEVICE_TABLE(bcma_pci_bridge_tbl) = { | 266 | static DEFINE_PCI_DEVICE_TABLE(bcma_pci_bridge_tbl) = { |
| @@ -284,8 +278,7 @@ static struct pci_driver bcma_pci_bridge_driver = { | |||
| 284 | .id_table = bcma_pci_bridge_tbl, | 278 | .id_table = bcma_pci_bridge_tbl, |
| 285 | .probe = bcma_host_pci_probe, | 279 | .probe = bcma_host_pci_probe, |
| 286 | .remove = bcma_host_pci_remove, | 280 | .remove = bcma_host_pci_remove, |
| 287 | .suspend = bcma_host_pci_suspend, | 281 | .driver.pm = BCMA_PM_OPS, |
| 288 | .resume = bcma_host_pci_resume, | ||
| 289 | }; | 282 | }; |
| 290 | 283 | ||
| 291 | int __init bcma_host_pci_init(void) | 284 | int __init bcma_host_pci_init(void) |
diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c index 10f92b371e58..febbc0a1222a 100644 --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c | |||
| @@ -241,6 +241,21 @@ int __init bcma_bus_early_register(struct bcma_bus *bus, | |||
| 241 | } | 241 | } |
| 242 | 242 | ||
| 243 | #ifdef CONFIG_PM | 243 | #ifdef CONFIG_PM |
| 244 | int bcma_bus_suspend(struct bcma_bus *bus) | ||
| 245 | { | ||
| 246 | struct bcma_device *core; | ||
| 247 | |||
| 248 | list_for_each_entry(core, &bus->cores, list) { | ||
| 249 | struct device_driver *drv = core->dev.driver; | ||
| 250 | if (drv) { | ||
| 251 | struct bcma_driver *adrv = container_of(drv, struct bcma_driver, drv); | ||
| 252 | if (adrv->suspend) | ||
| 253 | adrv->suspend(core); | ||
| 254 | } | ||
| 255 | } | ||
| 256 | return 0; | ||
| 257 | } | ||
| 258 | |||
| 244 | int bcma_bus_resume(struct bcma_bus *bus) | 259 | int bcma_bus_resume(struct bcma_bus *bus) |
| 245 | { | 260 | { |
| 246 | struct bcma_device *core; | 261 | struct bcma_device *core; |
| @@ -252,6 +267,15 @@ int bcma_bus_resume(struct bcma_bus *bus) | |||
| 252 | bcma_core_chipcommon_init(&bus->drv_cc); | 267 | bcma_core_chipcommon_init(&bus->drv_cc); |
| 253 | } | 268 | } |
| 254 | 269 | ||
| 270 | list_for_each_entry(core, &bus->cores, list) { | ||
| 271 | struct device_driver *drv = core->dev.driver; | ||
| 272 | if (drv) { | ||
| 273 | struct bcma_driver *adrv = container_of(drv, struct bcma_driver, drv); | ||
| 274 | if (adrv->resume) | ||
| 275 | adrv->resume(core); | ||
| 276 | } | ||
| 277 | } | ||
| 278 | |||
| 255 | return 0; | 279 | return 0; |
| 256 | } | 280 | } |
| 257 | #endif | 281 | #endif |
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c index 88c81c5706b2..09b8c9dbf78f 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c | |||
| @@ -557,10 +557,11 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, struct ath_rx_status *rxs, | |||
| 557 | rxs->rs_status |= ATH9K_RXERR_DECRYPT; | 557 | rxs->rs_status |= ATH9K_RXERR_DECRYPT; |
| 558 | else if (rxsp->status11 & AR_MichaelErr) | 558 | else if (rxsp->status11 & AR_MichaelErr) |
| 559 | rxs->rs_status |= ATH9K_RXERR_MIC; | 559 | rxs->rs_status |= ATH9K_RXERR_MIC; |
| 560 | if (rxsp->status11 & AR_KeyMiss) | ||
| 561 | rxs->rs_status |= ATH9K_RXERR_KEYMISS; | ||
| 562 | } | 560 | } |
| 563 | 561 | ||
| 562 | if (rxsp->status11 & AR_KeyMiss) | ||
| 563 | rxs->rs_status |= ATH9K_RXERR_KEYMISS; | ||
| 564 | |||
| 564 | return 0; | 565 | return 0; |
| 565 | } | 566 | } |
| 566 | EXPORT_SYMBOL(ath9k_hw_process_rxdesc_edma); | 567 | EXPORT_SYMBOL(ath9k_hw_process_rxdesc_edma); |
diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c index fd3f19c2e550..e196aba77acf 100644 --- a/drivers/net/wireless/ath/ath9k/mac.c +++ b/drivers/net/wireless/ath/ath9k/mac.c | |||
| @@ -618,10 +618,11 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds, | |||
| 618 | rs->rs_status |= ATH9K_RXERR_DECRYPT; | 618 | rs->rs_status |= ATH9K_RXERR_DECRYPT; |
| 619 | else if (ads.ds_rxstatus8 & AR_MichaelErr) | 619 | else if (ads.ds_rxstatus8 & AR_MichaelErr) |
| 620 | rs->rs_status |= ATH9K_RXERR_MIC; | 620 | rs->rs_status |= ATH9K_RXERR_MIC; |
| 621 | if (ads.ds_rxstatus8 & AR_KeyMiss) | ||
| 622 | rs->rs_status |= ATH9K_RXERR_KEYMISS; | ||
| 623 | } | 621 | } |
| 624 | 622 | ||
| 623 | if (ads.ds_rxstatus8 & AR_KeyMiss) | ||
| 624 | rs->rs_status |= ATH9K_RXERR_KEYMISS; | ||
| 625 | |||
| 625 | return 0; | 626 | return 0; |
| 626 | } | 627 | } |
| 627 | EXPORT_SYMBOL(ath9k_hw_rxprocdesc); | 628 | EXPORT_SYMBOL(ath9k_hw_rxprocdesc); |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 1c6f19393efa..b91f28ef1032 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
| @@ -4852,6 +4852,9 @@ static void b43_op_stop(struct ieee80211_hw *hw) | |||
| 4852 | 4852 | ||
| 4853 | cancel_work_sync(&(wl->beacon_update_trigger)); | 4853 | cancel_work_sync(&(wl->beacon_update_trigger)); |
| 4854 | 4854 | ||
| 4855 | if (!dev) | ||
| 4856 | goto out; | ||
| 4857 | |||
| 4855 | mutex_lock(&wl->mutex); | 4858 | mutex_lock(&wl->mutex); |
| 4856 | if (b43_status(dev) >= B43_STAT_STARTED) { | 4859 | if (b43_status(dev) >= B43_STAT_STARTED) { |
| 4857 | dev = b43_wireless_core_stop(dev); | 4860 | dev = b43_wireless_core_stop(dev); |
| @@ -4863,7 +4866,7 @@ static void b43_op_stop(struct ieee80211_hw *hw) | |||
| 4863 | 4866 | ||
| 4864 | out_unlock: | 4867 | out_unlock: |
| 4865 | mutex_unlock(&wl->mutex); | 4868 | mutex_unlock(&wl->mutex); |
| 4866 | 4869 | out: | |
| 4867 | cancel_work_sync(&(wl->txpower_adjust_work)); | 4870 | cancel_work_sync(&(wl->txpower_adjust_work)); |
| 4868 | } | 4871 | } |
| 4869 | 4872 | ||
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index f23b0c3e4ea3..bf11850a20f1 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | |||
| @@ -2475,7 +2475,7 @@ static s32 brcmf_init_iscan(struct brcmf_cfg80211_priv *cfg_priv) | |||
| 2475 | return err; | 2475 | return err; |
| 2476 | } | 2476 | } |
| 2477 | 2477 | ||
| 2478 | static void brcmf_delay(u32 ms) | 2478 | static __always_inline void brcmf_delay(u32 ms) |
| 2479 | { | 2479 | { |
| 2480 | if (ms < 1000 / HZ) { | 2480 | if (ms < 1000 / HZ) { |
| 2481 | cond_resched(); | 2481 | cond_resched(); |
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c index d106576ce338..448ab9c4eb47 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c | |||
| @@ -1128,14 +1128,7 @@ static int __devinit brcms_bcma_probe(struct bcma_device *pdev) | |||
| 1128 | return 0; | 1128 | return 0; |
| 1129 | } | 1129 | } |
| 1130 | 1130 | ||
| 1131 | static int brcms_pci_suspend(struct pci_dev *pdev) | 1131 | static int brcms_suspend(struct bcma_device *pdev) |
| 1132 | { | ||
| 1133 | pci_save_state(pdev); | ||
| 1134 | pci_disable_device(pdev); | ||
| 1135 | return pci_set_power_state(pdev, PCI_D3hot); | ||
| 1136 | } | ||
| 1137 | |||
| 1138 | static int brcms_suspend(struct bcma_device *pdev, pm_message_t state) | ||
| 1139 | { | 1132 | { |
| 1140 | struct brcms_info *wl; | 1133 | struct brcms_info *wl; |
| 1141 | struct ieee80211_hw *hw; | 1134 | struct ieee80211_hw *hw; |
| @@ -1153,40 +1146,15 @@ static int brcms_suspend(struct bcma_device *pdev, pm_message_t state) | |||
| 1153 | wl->pub->hw_up = false; | 1146 | wl->pub->hw_up = false; |
| 1154 | spin_unlock_bh(&wl->lock); | 1147 | spin_unlock_bh(&wl->lock); |
| 1155 | 1148 | ||
| 1156 | /* temporarily do suspend ourselves */ | 1149 | pr_debug("brcms_suspend ok\n"); |
| 1157 | return brcms_pci_suspend(pdev->bus->host_pci); | ||
| 1158 | } | ||
| 1159 | |||
| 1160 | static int brcms_pci_resume(struct pci_dev *pdev) | ||
| 1161 | { | ||
| 1162 | int err = 0; | ||
| 1163 | uint val; | ||
| 1164 | |||
| 1165 | err = pci_set_power_state(pdev, PCI_D0); | ||
| 1166 | if (err) | ||
| 1167 | return err; | ||
| 1168 | |||
| 1169 | pci_restore_state(pdev); | ||
| 1170 | |||
| 1171 | err = pci_enable_device(pdev); | ||
| 1172 | if (err) | ||
| 1173 | return err; | ||
| 1174 | |||
| 1175 | pci_set_master(pdev); | ||
| 1176 | |||
| 1177 | pci_read_config_dword(pdev, 0x40, &val); | ||
| 1178 | if ((val & 0x0000ff00) != 0) | ||
| 1179 | pci_write_config_dword(pdev, 0x40, val & 0xffff00ff); | ||
| 1180 | 1150 | ||
| 1181 | return 0; | 1151 | return 0; |
| 1182 | } | 1152 | } |
| 1183 | 1153 | ||
| 1184 | static int brcms_resume(struct bcma_device *pdev) | 1154 | static int brcms_resume(struct bcma_device *pdev) |
| 1185 | { | 1155 | { |
| 1186 | /* | 1156 | pr_debug("brcms_resume ok\n"); |
| 1187 | * just do pci resume for now until bcma supports it. | 1157 | return 0; |
| 1188 | */ | ||
| 1189 | return brcms_pci_resume(pdev->bus->host_pci); | ||
| 1190 | } | 1158 | } |
| 1191 | 1159 | ||
| 1192 | static struct bcma_driver brcms_bcma_driver = { | 1160 | static struct bcma_driver brcms_bcma_driver = { |
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c index 018a8deb88a8..4fcdac63a300 100644 --- a/drivers/net/wireless/ipw2x00/ipw2200.c +++ b/drivers/net/wireless/ipw2x00/ipw2200.c | |||
| @@ -7848,7 +7848,7 @@ static void ipw_handle_data_packet_monitor(struct ipw_priv *priv, | |||
| 7848 | * more efficiently than we can parse it. ORDER MATTERS HERE */ | 7848 | * more efficiently than we can parse it. ORDER MATTERS HERE */ |
| 7849 | struct ipw_rt_hdr *ipw_rt; | 7849 | struct ipw_rt_hdr *ipw_rt; |
| 7850 | 7850 | ||
| 7851 | short len = le16_to_cpu(pkt->u.frame.length); | 7851 | unsigned short len = le16_to_cpu(pkt->u.frame.length); |
| 7852 | 7852 | ||
| 7853 | /* We received data from the HW, so stop the watchdog */ | 7853 | /* We received data from the HW, so stop the watchdog */ |
| 7854 | dev->trans_start = jiffies; | 7854 | dev->trans_start = jiffies; |
| @@ -8023,7 +8023,7 @@ static void ipw_handle_promiscuous_rx(struct ipw_priv *priv, | |||
| 8023 | s8 signal = frame->rssi_dbm - IPW_RSSI_TO_DBM; | 8023 | s8 signal = frame->rssi_dbm - IPW_RSSI_TO_DBM; |
| 8024 | s8 noise = (s8) le16_to_cpu(frame->noise); | 8024 | s8 noise = (s8) le16_to_cpu(frame->noise); |
| 8025 | u8 rate = frame->rate; | 8025 | u8 rate = frame->rate; |
| 8026 | short len = le16_to_cpu(pkt->u.frame.length); | 8026 | unsigned short len = le16_to_cpu(pkt->u.frame.length); |
| 8027 | struct sk_buff *skb; | 8027 | struct sk_buff *skb; |
| 8028 | int hdr_only = 0; | 8028 | int hdr_only = 0; |
| 8029 | u16 filter = priv->prom_priv->filter; | 8029 | u16 filter = priv->prom_priv->filter; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c index 084aa2c4ccfb..a6454726737e 100644 --- a/drivers/net/wireless/iwlwifi/iwl-scan.c +++ b/drivers/net/wireless/iwlwifi/iwl-scan.c | |||
| @@ -569,7 +569,7 @@ static int iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif) | |||
| 569 | struct iwl_scan_cmd *scan; | 569 | struct iwl_scan_cmd *scan; |
| 570 | struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; | 570 | struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; |
| 571 | u32 rate_flags = 0; | 571 | u32 rate_flags = 0; |
| 572 | u16 cmd_len; | 572 | u16 cmd_len = 0; |
| 573 | u16 rx_chain = 0; | 573 | u16 rx_chain = 0; |
| 574 | enum ieee80211_band band; | 574 | enum ieee80211_band band; |
| 575 | u8 n_probes = 0; | 575 | u8 n_probes = 0; |
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index 7becea3dec65..dd5aeaff44ba 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
| @@ -2777,7 +2777,7 @@ static int mwl8k_cmd_tx_power(struct ieee80211_hw *hw, | |||
| 2777 | else if (channel->band == IEEE80211_BAND_5GHZ) | 2777 | else if (channel->band == IEEE80211_BAND_5GHZ) |
| 2778 | cmd->band = cpu_to_le16(0x4); | 2778 | cmd->band = cpu_to_le16(0x4); |
| 2779 | 2779 | ||
| 2780 | cmd->channel = channel->hw_value; | 2780 | cmd->channel = cpu_to_le16(channel->hw_value); |
| 2781 | 2781 | ||
| 2782 | if (conf->channel_type == NL80211_CHAN_NO_HT || | 2782 | if (conf->channel_type == NL80211_CHAN_NO_HT || |
| 2783 | conf->channel_type == NL80211_CHAN_HT20) { | 2783 | conf->channel_type == NL80211_CHAN_HT20) { |
| @@ -4066,7 +4066,7 @@ static int mwl8k_cmd_encryption_remove_key(struct ieee80211_hw *hw, | |||
| 4066 | goto done; | 4066 | goto done; |
| 4067 | 4067 | ||
| 4068 | if (key->cipher == WLAN_CIPHER_SUITE_WEP40 || | 4068 | if (key->cipher == WLAN_CIPHER_SUITE_WEP40 || |
| 4069 | WLAN_CIPHER_SUITE_WEP104) | 4069 | key->cipher == WLAN_CIPHER_SUITE_WEP104) |
| 4070 | mwl8k_vif->wep_key_conf[key->keyidx].enabled = 0; | 4070 | mwl8k_vif->wep_key_conf[key->keyidx].enabled = 0; |
| 4071 | 4071 | ||
| 4072 | cmd->action = cpu_to_le32(MWL8K_ENCR_REMOVE_KEY); | 4072 | cmd->action = cpu_to_le32(MWL8K_ENCR_REMOVE_KEY); |
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c index 4941a1a23219..dc88baefa72e 100644 --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c | |||
| @@ -422,7 +422,6 @@ static int rt2800pci_init_queues(struct rt2x00_dev *rt2x00dev) | |||
| 422 | static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev, | 422 | static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev, |
| 423 | enum dev_state state) | 423 | enum dev_state state) |
| 424 | { | 424 | { |
| 425 | int mask = (state == STATE_RADIO_IRQ_ON); | ||
| 426 | u32 reg; | 425 | u32 reg; |
| 427 | unsigned long flags; | 426 | unsigned long flags; |
| 428 | 427 | ||
| @@ -436,25 +435,14 @@ static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev, | |||
| 436 | } | 435 | } |
| 437 | 436 | ||
| 438 | spin_lock_irqsave(&rt2x00dev->irqmask_lock, flags); | 437 | spin_lock_irqsave(&rt2x00dev->irqmask_lock, flags); |
| 439 | rt2x00pci_register_read(rt2x00dev, INT_MASK_CSR, ®); | 438 | reg = 0; |
| 440 | rt2x00_set_field32(®, INT_MASK_CSR_RXDELAYINT, 0); | 439 | if (state == STATE_RADIO_IRQ_ON) { |
| 441 | rt2x00_set_field32(®, INT_MASK_CSR_TXDELAYINT, 0); | 440 | rt2x00_set_field32(®, INT_MASK_CSR_RX_DONE, 1); |
| 442 | rt2x00_set_field32(®, INT_MASK_CSR_RX_DONE, mask); | 441 | rt2x00_set_field32(®, INT_MASK_CSR_TBTT, 1); |
| 443 | rt2x00_set_field32(®, INT_MASK_CSR_AC0_DMA_DONE, 0); | 442 | rt2x00_set_field32(®, INT_MASK_CSR_PRE_TBTT, 1); |
| 444 | rt2x00_set_field32(®, INT_MASK_CSR_AC1_DMA_DONE, 0); | 443 | rt2x00_set_field32(®, INT_MASK_CSR_TX_FIFO_STATUS, 1); |
| 445 | rt2x00_set_field32(®, INT_MASK_CSR_AC2_DMA_DONE, 0); | 444 | rt2x00_set_field32(®, INT_MASK_CSR_AUTO_WAKEUP, 1); |
| 446 | rt2x00_set_field32(®, INT_MASK_CSR_AC3_DMA_DONE, 0); | 445 | } |
| 447 | rt2x00_set_field32(®, INT_MASK_CSR_HCCA_DMA_DONE, 0); | ||
| 448 | rt2x00_set_field32(®, INT_MASK_CSR_MGMT_DMA_DONE, 0); | ||
| 449 | rt2x00_set_field32(®, INT_MASK_CSR_MCU_COMMAND, 0); | ||
| 450 | rt2x00_set_field32(®, INT_MASK_CSR_RXTX_COHERENT, 0); | ||
| 451 | rt2x00_set_field32(®, INT_MASK_CSR_TBTT, mask); | ||
| 452 | rt2x00_set_field32(®, INT_MASK_CSR_PRE_TBTT, mask); | ||
| 453 | rt2x00_set_field32(®, INT_MASK_CSR_TX_FIFO_STATUS, mask); | ||
| 454 | rt2x00_set_field32(®, INT_MASK_CSR_AUTO_WAKEUP, mask); | ||
| 455 | rt2x00_set_field32(®, INT_MASK_CSR_GPTIMER, 0); | ||
| 456 | rt2x00_set_field32(®, INT_MASK_CSR_RX_COHERENT, 0); | ||
| 457 | rt2x00_set_field32(®, INT_MASK_CSR_TX_COHERENT, 0); | ||
| 458 | rt2x00pci_register_write(rt2x00dev, INT_MASK_CSR, reg); | 446 | rt2x00pci_register_write(rt2x00dev, INT_MASK_CSR, reg); |
| 459 | spin_unlock_irqrestore(&rt2x00dev->irqmask_lock, flags); | 447 | spin_unlock_irqrestore(&rt2x00dev->irqmask_lock, flags); |
| 460 | 448 | ||
