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 | |
parent | 59f608d84f937cb5e2fd3a0b9f848f200d47ba85 (diff) | |
parent | 604c4ef1c453a1b2ea2cdf04d2b49afec421ebfa (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
-rw-r--r-- | MAINTAINERS | 15 | ||||
-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 | ||||
-rw-r--r-- | include/linux/bcma/bcma.h | 2 | ||||
-rw-r--r-- | net/mac80211/cfg.c | 2 | ||||
-rw-r--r-- | net/mac80211/rx.c | 1 | ||||
-rw-r--r-- | net/mac80211/sta_info.c | 6 | ||||
-rw-r--r-- | net/mac80211/tx.c | 10 | ||||
-rw-r--r-- | net/mac80211/wpa.c | 19 | ||||
-rw-r--r-- | net/mac80211/wpa.h | 2 |
20 files changed, 108 insertions, 112 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 1094edf0da17..6e68daa1e64b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -1411,6 +1411,7 @@ F: net/ax25/ | |||
1411 | B43 WIRELESS DRIVER | 1411 | B43 WIRELESS DRIVER |
1412 | M: Stefano Brivio <stefano.brivio@polimi.it> | 1412 | M: Stefano Brivio <stefano.brivio@polimi.it> |
1413 | L: linux-wireless@vger.kernel.org | 1413 | L: linux-wireless@vger.kernel.org |
1414 | L: b43-dev@lists.infradead.org (moderated for non-subscribers) | ||
1414 | W: http://linuxwireless.org/en/users/Drivers/b43 | 1415 | W: http://linuxwireless.org/en/users/Drivers/b43 |
1415 | S: Maintained | 1416 | S: Maintained |
1416 | F: drivers/net/wireless/b43/ | 1417 | F: drivers/net/wireless/b43/ |
@@ -1587,6 +1588,13 @@ L: linux-scsi@vger.kernel.org | |||
1587 | S: Supported | 1588 | S: Supported |
1588 | F: drivers/scsi/bnx2fc/ | 1589 | F: drivers/scsi/bnx2fc/ |
1589 | 1590 | ||
1591 | BROADCOM SPECIFIC AMBA DRIVER (BCMA) | ||
1592 | M: Rafał Miłecki <zajec5@gmail.com> | ||
1593 | L: linux-wireless@vger.kernel.org | ||
1594 | S: Maintained | ||
1595 | F: drivers/bcma/ | ||
1596 | F: include/linux/bcma/ | ||
1597 | |||
1590 | BROCADE BFA FC SCSI DRIVER | 1598 | BROCADE BFA FC SCSI DRIVER |
1591 | M: Jing Huang <huangj@brocade.com> | 1599 | M: Jing Huang <huangj@brocade.com> |
1592 | L: linux-scsi@vger.kernel.org | 1600 | L: linux-scsi@vger.kernel.org |
@@ -6099,13 +6107,6 @@ S: Maintained | |||
6099 | F: drivers/ssb/ | 6107 | F: drivers/ssb/ |
6100 | F: include/linux/ssb/ | 6108 | F: include/linux/ssb/ |
6101 | 6109 | ||
6102 | BROADCOM SPECIFIC AMBA DRIVER (BCMA) | ||
6103 | M: Rafał Miłecki <zajec5@gmail.com> | ||
6104 | L: linux-wireless@vger.kernel.org | ||
6105 | S: Maintained | ||
6106 | F: drivers/bcma/ | ||
6107 | F: include/linux/bcma/ | ||
6108 | |||
6109 | SONY VAIO CONTROL DEVICE DRIVER | 6110 | SONY VAIO CONTROL DEVICE DRIVER |
6110 | M: Mattia Dongili <malattia@linux.it> | 6111 | M: Mattia Dongili <malattia@linux.it> |
6111 | L: platform-driver-x86@vger.kernel.org | 6112 | L: platform-driver-x86@vger.kernel.org |
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 | ||
diff --git a/include/linux/bcma/bcma.h b/include/linux/bcma/bcma.h index f4b8346b1a33..83c209f39493 100644 --- a/include/linux/bcma/bcma.h +++ b/include/linux/bcma/bcma.h | |||
@@ -162,7 +162,7 @@ struct bcma_driver { | |||
162 | 162 | ||
163 | int (*probe)(struct bcma_device *dev); | 163 | int (*probe)(struct bcma_device *dev); |
164 | void (*remove)(struct bcma_device *dev); | 164 | void (*remove)(struct bcma_device *dev); |
165 | int (*suspend)(struct bcma_device *dev, pm_message_t state); | 165 | int (*suspend)(struct bcma_device *dev); |
166 | int (*resume)(struct bcma_device *dev); | 166 | int (*resume)(struct bcma_device *dev); |
167 | void (*shutdown)(struct bcma_device *dev); | 167 | void (*shutdown)(struct bcma_device *dev); |
168 | 168 | ||
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index e60df48fa4d4..296620d6ca0c 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c | |||
@@ -791,7 +791,7 @@ static int sta_apply_parameters(struct ieee80211_local *local, | |||
791 | if (set & BIT(NL80211_STA_FLAG_AUTHORIZED)) | 791 | if (set & BIT(NL80211_STA_FLAG_AUTHORIZED)) |
792 | ret = sta_info_move_state_checked(sta, | 792 | ret = sta_info_move_state_checked(sta, |
793 | IEEE80211_STA_AUTHORIZED); | 793 | IEEE80211_STA_AUTHORIZED); |
794 | else | 794 | else if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) |
795 | ret = sta_info_move_state_checked(sta, | 795 | ret = sta_info_move_state_checked(sta, |
796 | IEEE80211_STA_ASSOC); | 796 | IEEE80211_STA_ASSOC); |
797 | if (ret) | 797 | if (ret) |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index f407427c642f..751409120769 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -1979,6 +1979,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx) | |||
1979 | mesh_path_error_tx(ifmsh->mshcfg.element_ttl, fwd_hdr->addr3, | 1979 | mesh_path_error_tx(ifmsh->mshcfg.element_ttl, fwd_hdr->addr3, |
1980 | 0, reason, fwd_hdr->addr2, sdata); | 1980 | 0, reason, fwd_hdr->addr2, sdata); |
1981 | IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_no_route); | 1981 | IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_no_route); |
1982 | kfree_skb(fwd_skb); | ||
1982 | return RX_DROP_MONITOR; | 1983 | return RX_DROP_MONITOR; |
1983 | } | 1984 | } |
1984 | 1985 | ||
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index 3c428d4839c7..ff11f6bf8266 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c | |||
@@ -238,9 +238,11 @@ static void sta_unblock(struct work_struct *wk) | |||
238 | if (sta->dead) | 238 | if (sta->dead) |
239 | return; | 239 | return; |
240 | 240 | ||
241 | if (!test_sta_flag(sta, WLAN_STA_PS_STA)) | 241 | if (!test_sta_flag(sta, WLAN_STA_PS_STA)) { |
242 | local_bh_disable(); | ||
242 | ieee80211_sta_ps_deliver_wakeup(sta); | 243 | ieee80211_sta_ps_deliver_wakeup(sta); |
243 | else if (test_and_clear_sta_flag(sta, WLAN_STA_PSPOLL)) { | 244 | local_bh_enable(); |
245 | } else if (test_and_clear_sta_flag(sta, WLAN_STA_PSPOLL)) { | ||
244 | clear_sta_flag(sta, WLAN_STA_PS_DRIVER); | 246 | clear_sta_flag(sta, WLAN_STA_PS_DRIVER); |
245 | 247 | ||
246 | local_bh_disable(); | 248 | local_bh_disable(); |
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index edcd1c7ab83f..e05667cd5e76 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1001,8 +1001,6 @@ ieee80211_tx_h_stats(struct ieee80211_tx_data *tx) | |||
1001 | static ieee80211_tx_result debug_noinline | 1001 | static ieee80211_tx_result debug_noinline |
1002 | ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) | 1002 | ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) |
1003 | { | 1003 | { |
1004 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); | ||
1005 | |||
1006 | if (!tx->key) | 1004 | if (!tx->key) |
1007 | return TX_CONTINUE; | 1005 | return TX_CONTINUE; |
1008 | 1006 | ||
@@ -1017,13 +1015,7 @@ ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) | |||
1017 | case WLAN_CIPHER_SUITE_AES_CMAC: | 1015 | case WLAN_CIPHER_SUITE_AES_CMAC: |
1018 | return ieee80211_crypto_aes_cmac_encrypt(tx); | 1016 | return ieee80211_crypto_aes_cmac_encrypt(tx); |
1019 | default: | 1017 | default: |
1020 | /* handle hw-only algorithm */ | 1018 | return ieee80211_crypto_hw_encrypt(tx); |
1021 | if (info->control.hw_key) { | ||
1022 | ieee80211_tx_set_protected(tx); | ||
1023 | return TX_CONTINUE; | ||
1024 | } | ||
1025 | break; | ||
1026 | |||
1027 | } | 1019 | } |
1028 | 1020 | ||
1029 | return TX_DROP; | 1021 | return TX_DROP; |
diff --git a/net/mac80211/wpa.c b/net/mac80211/wpa.c index 422b79851ec5..b758350919ff 100644 --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c | |||
@@ -643,3 +643,22 @@ ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx) | |||
643 | 643 | ||
644 | return RX_CONTINUE; | 644 | return RX_CONTINUE; |
645 | } | 645 | } |
646 | |||
647 | ieee80211_tx_result | ||
648 | ieee80211_crypto_hw_encrypt(struct ieee80211_tx_data *tx) | ||
649 | { | ||
650 | struct sk_buff *skb; | ||
651 | struct ieee80211_tx_info *info = NULL; | ||
652 | |||
653 | skb_queue_walk(&tx->skbs, skb) { | ||
654 | info = IEEE80211_SKB_CB(skb); | ||
655 | |||
656 | /* handle hw-only algorithm */ | ||
657 | if (!info->control.hw_key) | ||
658 | return TX_DROP; | ||
659 | } | ||
660 | |||
661 | ieee80211_tx_set_protected(tx); | ||
662 | |||
663 | return TX_CONTINUE; | ||
664 | } | ||
diff --git a/net/mac80211/wpa.h b/net/mac80211/wpa.h index baba0608313e..07e33f899c71 100644 --- a/net/mac80211/wpa.h +++ b/net/mac80211/wpa.h | |||
@@ -32,5 +32,7 @@ ieee80211_tx_result | |||
32 | ieee80211_crypto_aes_cmac_encrypt(struct ieee80211_tx_data *tx); | 32 | ieee80211_crypto_aes_cmac_encrypt(struct ieee80211_tx_data *tx); |
33 | ieee80211_rx_result | 33 | ieee80211_rx_result |
34 | ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx); | 34 | ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx); |
35 | ieee80211_tx_result | ||
36 | ieee80211_crypto_hw_encrypt(struct ieee80211_tx_data *tx); | ||
35 | 37 | ||
36 | #endif /* WPA_H */ | 38 | #endif /* WPA_H */ |