Commit 61c93f4e authored by Jeff Garzik's avatar Jeff Garzik

Merge branch 'fixes-jgarzik' of...

Merge branch 'fixes-jgarzik' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 into upstream-fixes
parents 9914cad5 412e9e78
...@@ -587,15 +587,66 @@ config ADM8211 ...@@ -587,15 +587,66 @@ config ADM8211
config P54_COMMON config P54_COMMON
tristate "Softmac Prism54 support" tristate "Softmac Prism54 support"
depends on MAC80211 && WLAN_80211 && FW_LOADER && EXPERIMENTAL depends on MAC80211 && WLAN_80211 && FW_LOADER && EXPERIMENTAL
---help---
This is common code for isl38xx based cards.
This module does nothing by itself - the USB/PCI frontends
also need to be enabled in order to support any devices.
These devices require softmac firmware which can be found at
http://prism54.org/
If you choose to build a module, it'll be called p54common.
config P54_USB config P54_USB
tristate "Prism54 USB support" tristate "Prism54 USB support"
depends on P54_COMMON && USB depends on P54_COMMON && USB
select CRC32 select CRC32
---help---
This driver is for USB isl38xx based wireless cards.
These are USB based adapters found in devices such as:
3COM 3CRWE254G72
SMC 2862W-G
Accton 802.11g WN4501 USB
Siemens Gigaset USB
Netgear WG121
Netgear WG111
Medion 40900, Roper Europe
Shuttle PN15, Airvast WM168g, IOGear GWU513
Linksys WUSB54G
Linksys WUSB54G Portable
DLink DWL-G120 Spinnaker
DLink DWL-G122
Belkin F5D7050 ver 1000
Cohiba Proto board
SMC 2862W-G version 2
U.S. Robotics U5 802.11g Adapter
FUJITSU E-5400 USB D1700
Sagem XG703A
DLink DWL-G120 Cohiba
Spinnaker Proto board
Linksys WUSB54AG
Inventel UR054G
Spinnaker DUT
These devices require softmac firmware which can be found at
http://prism54.org/
If you choose to build a module, it'll be called p54usb.
config P54_PCI config P54_PCI
tristate "Prism54 PCI support" tristate "Prism54 PCI support"
depends on P54_COMMON && PCI depends on P54_COMMON && PCI
---help---
This driver is for PCI isl38xx based wireless cards.
This driver supports most devices that are supported by the
fullmac prism54 driver plus many devices which are not
supported by the fullmac driver/firmware.
This driver requires softmac firmware which can be found at
http://prism54.org/
If you choose to build a module, it'll be called p54pci.
source "drivers/net/wireless/iwlwifi/Kconfig" source "drivers/net/wireless/iwlwifi/Kconfig"
source "drivers/net/wireless/hostap/Kconfig" source "drivers/net/wireless/hostap/Kconfig"
......
...@@ -1233,9 +1233,19 @@ static ssize_t show_event_log(struct device *d, ...@@ -1233,9 +1233,19 @@ static ssize_t show_event_log(struct device *d,
{ {
struct ipw_priv *priv = dev_get_drvdata(d); struct ipw_priv *priv = dev_get_drvdata(d);
u32 log_len = ipw_get_event_log_len(priv); u32 log_len = ipw_get_event_log_len(priv);
struct ipw_event log[log_len]; u32 log_size;
struct ipw_event *log;
u32 len = 0, i; u32 len = 0, i;
/* not using min() because of its strict type checking */
log_size = PAGE_SIZE / sizeof(*log) > log_len ?
sizeof(*log) * log_len : PAGE_SIZE;
log = kzalloc(log_size, GFP_KERNEL);
if (!log) {
IPW_ERROR("Unable to allocate memory for log\n");
return 0;
}
log_len = log_size / sizeof(*log);
ipw_capture_event_log(priv, log_len, log); ipw_capture_event_log(priv, log_len, log);
len += snprintf(buf + len, PAGE_SIZE - len, "%08X", log_len); len += snprintf(buf + len, PAGE_SIZE - len, "%08X", log_len);
...@@ -1244,6 +1254,7 @@ static ssize_t show_event_log(struct device *d, ...@@ -1244,6 +1254,7 @@ static ssize_t show_event_log(struct device *d,
"\n%08X%08X%08X", "\n%08X%08X%08X",
log[i].time, log[i].event, log[i].data); log[i].time, log[i].event, log[i].data);
len += snprintf(buf + len, PAGE_SIZE - len, "\n"); len += snprintf(buf + len, PAGE_SIZE - len, "\n");
kfree(log);
return len; return len;
} }
......
...@@ -6246,8 +6246,6 @@ static void __iwl_down(struct iwl_priv *priv) ...@@ -6246,8 +6246,6 @@ static void __iwl_down(struct iwl_priv *priv)
/* Unblock any waiting calls */ /* Unblock any waiting calls */
wake_up_interruptible_all(&priv->wait_command_queue); wake_up_interruptible_all(&priv->wait_command_queue);
iwl_cancel_deferred_work(priv);
/* Wipe out the EXIT_PENDING status bit if we are not actually /* Wipe out the EXIT_PENDING status bit if we are not actually
* exiting the module */ * exiting the module */
if (!exit_pending) if (!exit_pending)
...@@ -6322,6 +6320,8 @@ static void iwl_down(struct iwl_priv *priv) ...@@ -6322,6 +6320,8 @@ static void iwl_down(struct iwl_priv *priv)
mutex_lock(&priv->mutex); mutex_lock(&priv->mutex);
__iwl_down(priv); __iwl_down(priv);
mutex_unlock(&priv->mutex); mutex_unlock(&priv->mutex);
iwl_cancel_deferred_work(priv);
} }
#define MAX_HW_RESTARTS 5 #define MAX_HW_RESTARTS 5
...@@ -8580,10 +8580,9 @@ static void iwl_pci_remove(struct pci_dev *pdev) ...@@ -8580,10 +8580,9 @@ static void iwl_pci_remove(struct pci_dev *pdev)
IWL_DEBUG_INFO("*** UNLOAD DRIVER ***\n"); IWL_DEBUG_INFO("*** UNLOAD DRIVER ***\n");
mutex_lock(&priv->mutex);
set_bit(STATUS_EXIT_PENDING, &priv->status); set_bit(STATUS_EXIT_PENDING, &priv->status);
__iwl_down(priv);
mutex_unlock(&priv->mutex); iwl_down(priv);
/* Free MAC hash list for ADHOC */ /* Free MAC hash list for ADHOC */
for (i = 0; i < IWL_IBSS_MAC_HASH_SIZE; i++) { 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,12 +8641,10 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
{ {
struct iwl_priv *priv = pci_get_drvdata(pdev); struct iwl_priv *priv = pci_get_drvdata(pdev);
mutex_lock(&priv->mutex);
set_bit(STATUS_IN_SUSPEND, &priv->status); set_bit(STATUS_IN_SUSPEND, &priv->status);
/* Take down the device; powers it off, etc. */ /* Take down the device; powers it off, etc. */
__iwl_down(priv); iwl_down(priv);
if (priv->mac80211_registered) if (priv->mac80211_registered)
ieee80211_stop_queues(priv->hw); ieee80211_stop_queues(priv->hw);
...@@ -8656,8 +8653,6 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state) ...@@ -8656,8 +8653,6 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
pci_disable_device(pdev); pci_disable_device(pdev);
pci_set_power_state(pdev, PCI_D3hot); pci_set_power_state(pdev, PCI_D3hot);
mutex_unlock(&priv->mutex);
return 0; return 0;
} }
...@@ -8715,8 +8710,6 @@ static int iwl_pci_resume(struct pci_dev *pdev) ...@@ -8715,8 +8710,6 @@ static int iwl_pci_resume(struct pci_dev *pdev)
printk(KERN_INFO "Coming out of suspend...\n"); printk(KERN_INFO "Coming out of suspend...\n");
mutex_lock(&priv->mutex);
pci_set_power_state(pdev, PCI_D0); pci_set_power_state(pdev, PCI_D0);
err = pci_enable_device(pdev); err = pci_enable_device(pdev);
pci_restore_state(pdev); pci_restore_state(pdev);
...@@ -8730,7 +8723,6 @@ static int iwl_pci_resume(struct pci_dev *pdev) ...@@ -8730,7 +8723,6 @@ static int iwl_pci_resume(struct pci_dev *pdev)
pci_write_config_byte(pdev, 0x41, 0x00); pci_write_config_byte(pdev, 0x41, 0x00);
iwl_resume(priv); iwl_resume(priv);
mutex_unlock(&priv->mutex);
return 0; return 0;
} }
......
...@@ -6601,8 +6601,6 @@ static void __iwl_down(struct iwl_priv *priv) ...@@ -6601,8 +6601,6 @@ static void __iwl_down(struct iwl_priv *priv)
/* Unblock any waiting calls */ /* Unblock any waiting calls */
wake_up_interruptible_all(&priv->wait_command_queue); wake_up_interruptible_all(&priv->wait_command_queue);
iwl_cancel_deferred_work(priv);
/* Wipe out the EXIT_PENDING status bit if we are not actually /* Wipe out the EXIT_PENDING status bit if we are not actually
* exiting the module */ * exiting the module */
if (!exit_pending) if (!exit_pending)
...@@ -6677,6 +6675,8 @@ static void iwl_down(struct iwl_priv *priv) ...@@ -6677,6 +6675,8 @@ static void iwl_down(struct iwl_priv *priv)
mutex_lock(&priv->mutex); mutex_lock(&priv->mutex);
__iwl_down(priv); __iwl_down(priv);
mutex_unlock(&priv->mutex); mutex_unlock(&priv->mutex);
iwl_cancel_deferred_work(priv);
} }
#define MAX_HW_RESTARTS 5 #define MAX_HW_RESTARTS 5
...@@ -9174,10 +9174,9 @@ static void iwl_pci_remove(struct pci_dev *pdev) ...@@ -9174,10 +9174,9 @@ static void iwl_pci_remove(struct pci_dev *pdev)
IWL_DEBUG_INFO("*** UNLOAD DRIVER ***\n"); IWL_DEBUG_INFO("*** UNLOAD DRIVER ***\n");
mutex_lock(&priv->mutex);
set_bit(STATUS_EXIT_PENDING, &priv->status); set_bit(STATUS_EXIT_PENDING, &priv->status);
__iwl_down(priv);
mutex_unlock(&priv->mutex); iwl_down(priv);
/* Free MAC hash list for ADHOC */ /* Free MAC hash list for ADHOC */
for (i = 0; i < IWL_IBSS_MAC_HASH_SIZE; i++) { 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,12 +9235,10 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
{ {
struct iwl_priv *priv = pci_get_drvdata(pdev); struct iwl_priv *priv = pci_get_drvdata(pdev);
mutex_lock(&priv->mutex);
set_bit(STATUS_IN_SUSPEND, &priv->status); set_bit(STATUS_IN_SUSPEND, &priv->status);
/* Take down the device; powers it off, etc. */ /* Take down the device; powers it off, etc. */
__iwl_down(priv); iwl_down(priv);
if (priv->mac80211_registered) if (priv->mac80211_registered)
ieee80211_stop_queues(priv->hw); ieee80211_stop_queues(priv->hw);
...@@ -9250,8 +9247,6 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state) ...@@ -9250,8 +9247,6 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
pci_disable_device(pdev); pci_disable_device(pdev);
pci_set_power_state(pdev, PCI_D3hot); pci_set_power_state(pdev, PCI_D3hot);
mutex_unlock(&priv->mutex);
return 0; return 0;
} }
...@@ -9309,8 +9304,6 @@ static int iwl_pci_resume(struct pci_dev *pdev) ...@@ -9309,8 +9304,6 @@ static int iwl_pci_resume(struct pci_dev *pdev)
printk(KERN_INFO "Coming out of suspend...\n"); printk(KERN_INFO "Coming out of suspend...\n");
mutex_lock(&priv->mutex);
pci_set_power_state(pdev, PCI_D0); pci_set_power_state(pdev, PCI_D0);
err = pci_enable_device(pdev); err = pci_enable_device(pdev);
pci_restore_state(pdev); pci_restore_state(pdev);
...@@ -9324,7 +9317,6 @@ static int iwl_pci_resume(struct pci_dev *pdev) ...@@ -9324,7 +9317,6 @@ static int iwl_pci_resume(struct pci_dev *pdev)
pci_write_config_byte(pdev, 0x41, 0x00); pci_write_config_byte(pdev, 0x41, 0x00);
iwl_resume(priv); iwl_resume(priv);
mutex_unlock(&priv->mutex);
return 0; return 0;
} }
......
...@@ -38,6 +38,8 @@ static struct usb_device_id rtl8187_table[] __devinitdata = { ...@@ -38,6 +38,8 @@ static struct usb_device_id rtl8187_table[] __devinitdata = {
{USB_DEVICE(0x0846, 0x6a00)}, {USB_DEVICE(0x0846, 0x6a00)},
/* HP */ /* HP */
{USB_DEVICE(0x03f0, 0xca02)}, {USB_DEVICE(0x03f0, 0xca02)},
/* Sitecom */
{USB_DEVICE(0x0df6, 0x000d)},
{} {}
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment