aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/Kconfig51
-rw-r--r--drivers/net/wireless/ipw2200.c13
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c18
-rw-r--r--drivers/net/wireless/iwlwifi/iwl4965-base.c18
-rw-r--r--drivers/net/wireless/rtl8187_dev.c2
5 files changed, 75 insertions, 27 deletions
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 5583719a0dca..c98fc62a3e61 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -587,15 +587,66 @@ config ADM8211
587config P54_COMMON 587config P54_COMMON
588 tristate "Softmac Prism54 support" 588 tristate "Softmac Prism54 support"
589 depends on MAC80211 && WLAN_80211 && FW_LOADER && EXPERIMENTAL 589 depends on MAC80211 && WLAN_80211 && FW_LOADER && EXPERIMENTAL
590 ---help---
591 This is common code for isl38xx based cards.
592 This module does nothing by itself - the USB/PCI frontends
593 also need to be enabled in order to support any devices.
594
595 These devices require softmac firmware which can be found at
596 http://prism54.org/
597
598 If you choose to build a module, it'll be called p54common.
590 599
591config P54_USB 600config P54_USB
592 tristate "Prism54 USB support" 601 tristate "Prism54 USB support"
593 depends on P54_COMMON && USB 602 depends on P54_COMMON && USB
594 select CRC32 603 select CRC32
604 ---help---
605 This driver is for USB isl38xx based wireless cards.
606 These are USB based adapters found in devices such as:
607
608 3COM 3CRWE254G72
609 SMC 2862W-G
610 Accton 802.11g WN4501 USB
611 Siemens Gigaset USB
612 Netgear WG121
613 Netgear WG111
614 Medion 40900, Roper Europe
615 Shuttle PN15, Airvast WM168g, IOGear GWU513
616 Linksys WUSB54G
617 Linksys WUSB54G Portable
618 DLink DWL-G120 Spinnaker
619 DLink DWL-G122
620 Belkin F5D7050 ver 1000
621 Cohiba Proto board
622 SMC 2862W-G version 2
623 U.S. Robotics U5 802.11g Adapter
624 FUJITSU E-5400 USB D1700
625 Sagem XG703A
626 DLink DWL-G120 Cohiba
627 Spinnaker Proto board
628 Linksys WUSB54AG
629 Inventel UR054G
630 Spinnaker DUT
631
632 These devices require softmac firmware which can be found at
633 http://prism54.org/
634
635 If you choose to build a module, it'll be called p54usb.
595 636
596config P54_PCI 637config P54_PCI
597 tristate "Prism54 PCI support" 638 tristate "Prism54 PCI support"
598 depends on P54_COMMON && PCI 639 depends on P54_COMMON && PCI
640 ---help---
641 This driver is for PCI isl38xx based wireless cards.
642 This driver supports most devices that are supported by the
643 fullmac prism54 driver plus many devices which are not
644 supported by the fullmac driver/firmware.
645
646 This driver requires softmac firmware which can be found at
647 http://prism54.org/
648
649 If you choose to build a module, it'll be called p54pci.
599 650
600source "drivers/net/wireless/iwlwifi/Kconfig" 651source "drivers/net/wireless/iwlwifi/Kconfig"
601source "drivers/net/wireless/hostap/Kconfig" 652source "drivers/net/wireless/hostap/Kconfig"
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index da51f477e9df..88062c1318a8 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -1233,9 +1233,19 @@ static ssize_t show_event_log(struct device *d,
1233{ 1233{
1234 struct ipw_priv *priv = dev_get_drvdata(d); 1234 struct ipw_priv *priv = dev_get_drvdata(d);
1235 u32 log_len = ipw_get_event_log_len(priv); 1235 u32 log_len = ipw_get_event_log_len(priv);
1236 struct ipw_event log[log_len]; 1236 u32 log_size;
1237 struct ipw_event *log;
1237 u32 len = 0, i; 1238 u32 len = 0, i;
1238 1239
1240 /* not using min() because of its strict type checking */
1241 log_size = PAGE_SIZE / sizeof(*log) > log_len ?
1242 sizeof(*log) * log_len : PAGE_SIZE;
1243 log = kzalloc(log_size, GFP_KERNEL);
1244 if (!log) {
1245 IPW_ERROR("Unable to allocate memory for log\n");
1246 return 0;
1247 }
1248 log_len = log_size / sizeof(*log);
1239 ipw_capture_event_log(priv, log_len, log); 1249 ipw_capture_event_log(priv, log_len, log);
1240 1250
1241 len += snprintf(buf + len, PAGE_SIZE - len, "%08X", log_len); 1251 len += snprintf(buf + len, PAGE_SIZE - len, "%08X", log_len);
@@ -1244,6 +1254,7 @@ static ssize_t show_event_log(struct device *d,
1244 "\n%08X%08X%08X", 1254 "\n%08X%08X%08X",
1245 log[i].time, log[i].event, log[i].data); 1255 log[i].time, log[i].event, log[i].data);
1246 len += snprintf(buf + len, PAGE_SIZE - len, "\n"); 1256 len += snprintf(buf + len, PAGE_SIZE - len, "\n");
1257 kfree(log);
1247 return len; 1258 return len;
1248} 1259}
1249 1260
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 3d1da0759b97..1a6b0e0edf6f 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -6246,8 +6246,6 @@ static void __iwl_down(struct iwl_priv *priv)
6246 /* Unblock any waiting calls */ 6246 /* Unblock any waiting calls */
6247 wake_up_interruptible_all(&priv->wait_command_queue); 6247 wake_up_interruptible_all(&priv->wait_command_queue);
6248 6248
6249 iwl_cancel_deferred_work(priv);
6250
6251 /* Wipe out the EXIT_PENDING status bit if we are not actually 6249 /* Wipe out the EXIT_PENDING status bit if we are not actually
6252 * exiting the module */ 6250 * exiting the module */
6253 if (!exit_pending) 6251 if (!exit_pending)
@@ -6322,6 +6320,8 @@ static void iwl_down(struct iwl_priv *priv)
6322 mutex_lock(&priv->mutex); 6320 mutex_lock(&priv->mutex);
6323 __iwl_down(priv); 6321 __iwl_down(priv);
6324 mutex_unlock(&priv->mutex); 6322 mutex_unlock(&priv->mutex);
6323
6324 iwl_cancel_deferred_work(priv);
6325} 6325}
6326 6326
6327#define MAX_HW_RESTARTS 5 6327#define MAX_HW_RESTARTS 5
@@ -8580,10 +8580,9 @@ static void iwl_pci_remove(struct pci_dev *pdev)
8580 8580
8581 IWL_DEBUG_INFO("*** UNLOAD DRIVER ***\n"); 8581 IWL_DEBUG_INFO("*** UNLOAD DRIVER ***\n");
8582 8582
8583 mutex_lock(&priv->mutex);
8584 set_bit(STATUS_EXIT_PENDING, &priv->status); 8583 set_bit(STATUS_EXIT_PENDING, &priv->status);
8585 __iwl_down(priv); 8584
8586 mutex_unlock(&priv->mutex); 8585 iwl_down(priv);
8587 8586
8588 /* Free MAC hash list for ADHOC */ 8587 /* Free MAC hash list for ADHOC */
8589 for (i = 0; i < IWL_IBSS_MAC_HASH_SIZE; i++) { 8588 for (i = 0; i < IWL_IBSS_MAC_HASH_SIZE; i++) {
@@ -8642,12 +8641,10 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
8642{ 8641{
8643 struct iwl_priv *priv = pci_get_drvdata(pdev); 8642 struct iwl_priv *priv = pci_get_drvdata(pdev);
8644 8643
8645 mutex_lock(&priv->mutex);
8646
8647 set_bit(STATUS_IN_SUSPEND, &priv->status); 8644 set_bit(STATUS_IN_SUSPEND, &priv->status);
8648 8645
8649 /* Take down the device; powers it off, etc. */ 8646 /* Take down the device; powers it off, etc. */
8650 __iwl_down(priv); 8647 iwl_down(priv);
8651 8648
8652 if (priv->mac80211_registered) 8649 if (priv->mac80211_registered)
8653 ieee80211_stop_queues(priv->hw); 8650 ieee80211_stop_queues(priv->hw);
@@ -8656,8 +8653,6 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
8656 pci_disable_device(pdev); 8653 pci_disable_device(pdev);
8657 pci_set_power_state(pdev, PCI_D3hot); 8654 pci_set_power_state(pdev, PCI_D3hot);
8658 8655
8659 mutex_unlock(&priv->mutex);
8660
8661 return 0; 8656 return 0;
8662} 8657}
8663 8658
@@ -8715,8 +8710,6 @@ static int iwl_pci_resume(struct pci_dev *pdev)
8715 8710
8716 printk(KERN_INFO "Coming out of suspend...\n"); 8711 printk(KERN_INFO "Coming out of suspend...\n");
8717 8712
8718 mutex_lock(&priv->mutex);
8719
8720 pci_set_power_state(pdev, PCI_D0); 8713 pci_set_power_state(pdev, PCI_D0);
8721 err = pci_enable_device(pdev); 8714 err = pci_enable_device(pdev);
8722 pci_restore_state(pdev); 8715 pci_restore_state(pdev);
@@ -8730,7 +8723,6 @@ static int iwl_pci_resume(struct pci_dev *pdev)
8730 pci_write_config_byte(pdev, 0x41, 0x00); 8723 pci_write_config_byte(pdev, 0x41, 0x00);
8731 8724
8732 iwl_resume(priv); 8725 iwl_resume(priv);
8733 mutex_unlock(&priv->mutex);
8734 8726
8735 return 0; 8727 return 0;
8736} 8728}
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c
index b54fe5e6d529..6cd57c220631 100644
--- a/drivers/net/wireless/iwlwifi/iwl4965-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c
@@ -6601,8 +6601,6 @@ static void __iwl_down(struct iwl_priv *priv)
6601 /* Unblock any waiting calls */ 6601 /* Unblock any waiting calls */
6602 wake_up_interruptible_all(&priv->wait_command_queue); 6602 wake_up_interruptible_all(&priv->wait_command_queue);
6603 6603
6604 iwl_cancel_deferred_work(priv);
6605
6606 /* Wipe out the EXIT_PENDING status bit if we are not actually 6604 /* Wipe out the EXIT_PENDING status bit if we are not actually
6607 * exiting the module */ 6605 * exiting the module */
6608 if (!exit_pending) 6606 if (!exit_pending)
@@ -6677,6 +6675,8 @@ static void iwl_down(struct iwl_priv *priv)
6677 mutex_lock(&priv->mutex); 6675 mutex_lock(&priv->mutex);
6678 __iwl_down(priv); 6676 __iwl_down(priv);
6679 mutex_unlock(&priv->mutex); 6677 mutex_unlock(&priv->mutex);
6678
6679 iwl_cancel_deferred_work(priv);
6680} 6680}
6681 6681
6682#define MAX_HW_RESTARTS 5 6682#define MAX_HW_RESTARTS 5
@@ -9174,10 +9174,9 @@ static void iwl_pci_remove(struct pci_dev *pdev)
9174 9174
9175 IWL_DEBUG_INFO("*** UNLOAD DRIVER ***\n"); 9175 IWL_DEBUG_INFO("*** UNLOAD DRIVER ***\n");
9176 9176
9177 mutex_lock(&priv->mutex);
9178 set_bit(STATUS_EXIT_PENDING, &priv->status); 9177 set_bit(STATUS_EXIT_PENDING, &priv->status);
9179 __iwl_down(priv); 9178
9180 mutex_unlock(&priv->mutex); 9179 iwl_down(priv);
9181 9180
9182 /* Free MAC hash list for ADHOC */ 9181 /* Free MAC hash list for ADHOC */
9183 for (i = 0; i < IWL_IBSS_MAC_HASH_SIZE; i++) { 9182 for (i = 0; i < IWL_IBSS_MAC_HASH_SIZE; i++) {
@@ -9236,12 +9235,10 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
9236{ 9235{
9237 struct iwl_priv *priv = pci_get_drvdata(pdev); 9236 struct iwl_priv *priv = pci_get_drvdata(pdev);
9238 9237
9239 mutex_lock(&priv->mutex);
9240
9241 set_bit(STATUS_IN_SUSPEND, &priv->status); 9238 set_bit(STATUS_IN_SUSPEND, &priv->status);
9242 9239
9243 /* Take down the device; powers it off, etc. */ 9240 /* Take down the device; powers it off, etc. */
9244 __iwl_down(priv); 9241 iwl_down(priv);
9245 9242
9246 if (priv->mac80211_registered) 9243 if (priv->mac80211_registered)
9247 ieee80211_stop_queues(priv->hw); 9244 ieee80211_stop_queues(priv->hw);
@@ -9250,8 +9247,6 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
9250 pci_disable_device(pdev); 9247 pci_disable_device(pdev);
9251 pci_set_power_state(pdev, PCI_D3hot); 9248 pci_set_power_state(pdev, PCI_D3hot);
9252 9249
9253 mutex_unlock(&priv->mutex);
9254
9255 return 0; 9250 return 0;
9256} 9251}
9257 9252
@@ -9309,8 +9304,6 @@ static int iwl_pci_resume(struct pci_dev *pdev)
9309 9304
9310 printk(KERN_INFO "Coming out of suspend...\n"); 9305 printk(KERN_INFO "Coming out of suspend...\n");
9311 9306
9312 mutex_lock(&priv->mutex);
9313
9314 pci_set_power_state(pdev, PCI_D0); 9307 pci_set_power_state(pdev, PCI_D0);
9315 err = pci_enable_device(pdev); 9308 err = pci_enable_device(pdev);
9316 pci_restore_state(pdev); 9309 pci_restore_state(pdev);
@@ -9324,7 +9317,6 @@ static int iwl_pci_resume(struct pci_dev *pdev)
9324 pci_write_config_byte(pdev, 0x41, 0x00); 9317 pci_write_config_byte(pdev, 0x41, 0x00);
9325 9318
9326 iwl_resume(priv); 9319 iwl_resume(priv);
9327 mutex_unlock(&priv->mutex);
9328 9320
9329 return 0; 9321 return 0;
9330} 9322}
diff --git a/drivers/net/wireless/rtl8187_dev.c b/drivers/net/wireless/rtl8187_dev.c
index e454ae83e97a..bd1ab3b3afc0 100644
--- a/drivers/net/wireless/rtl8187_dev.c
+++ b/drivers/net/wireless/rtl8187_dev.c
@@ -38,6 +38,8 @@ static struct usb_device_id rtl8187_table[] __devinitdata = {
38 {USB_DEVICE(0x0846, 0x6a00)}, 38 {USB_DEVICE(0x0846, 0x6a00)},
39 /* HP */ 39 /* HP */
40 {USB_DEVICE(0x03f0, 0xca02)}, 40 {USB_DEVICE(0x03f0, 0xca02)},
41 /* Sitecom */
42 {USB_DEVICE(0x0df6, 0x000d)},
41 {} 43 {}
42}; 44};
43 45