diff options
| author | David S. Miller <davem@davemloft.net> | 2009-11-06 21:21:44 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-11-06 21:21:44 -0500 |
| commit | bb7b22840141a4fab8f232ee90d30cdf728bb032 (patch) | |
| tree | 43a92bc304db0fc53155b70f83f3dd39e62a775a | |
| parent | 539054a8fa5141c9a4e9ac6a86d249e3f2bdef45 (diff) | |
| parent | 66f84d6594729c866c0c03fe97159a987dad7d84 (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
| -rw-r--r-- | drivers/net/wireless/ipw2x00/ipw2100.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/ipw2x00/ipw2200.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ipw2x00/libipw.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ipw2x00/libipw_module.c | 14 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00dev.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00link.c | 11 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00usb.c | 9 | ||||
| -rw-r--r-- | drivers/net/wireless/rtl818x/rtl8187_leds.c | 4 |
8 files changed, 25 insertions, 25 deletions
diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c index a741d37fd96f..240cff1e6979 100644 --- a/drivers/net/wireless/ipw2x00/ipw2100.c +++ b/drivers/net/wireless/ipw2x00/ipw2100.c | |||
| @@ -6325,10 +6325,8 @@ static int ipw2100_pci_init_one(struct pci_dev *pci_dev, | |||
| 6325 | 6325 | ||
| 6326 | fail: | 6326 | fail: |
| 6327 | if (dev) { | 6327 | if (dev) { |
| 6328 | if (registered) { | 6328 | if (registered) |
| 6329 | unregister_ieee80211(priv->ieee); | ||
| 6330 | unregister_netdev(dev); | 6329 | unregister_netdev(dev); |
| 6331 | } | ||
| 6332 | 6330 | ||
| 6333 | ipw2100_hw_stop_adapter(priv); | 6331 | ipw2100_hw_stop_adapter(priv); |
| 6334 | 6332 | ||
| @@ -6385,7 +6383,6 @@ static void __devexit ipw2100_pci_remove_one(struct pci_dev *pci_dev) | |||
| 6385 | /* Unregister the device first - this results in close() | 6383 | /* Unregister the device first - this results in close() |
| 6386 | * being called if the device is open. If we free storage | 6384 | * being called if the device is open. If we free storage |
| 6387 | * first, then close() will crash. */ | 6385 | * first, then close() will crash. */ |
| 6388 | unregister_ieee80211(priv->ieee); | ||
| 6389 | unregister_netdev(dev); | 6386 | unregister_netdev(dev); |
| 6390 | 6387 | ||
| 6391 | /* ipw2100_down will ensure that there is no more pending work | 6388 | /* ipw2100_down will ensure that there is no more pending work |
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c index 04341a2a6193..8d58e6ed4e7d 100644 --- a/drivers/net/wireless/ipw2x00/ipw2200.c +++ b/drivers/net/wireless/ipw2x00/ipw2200.c | |||
| @@ -11821,7 +11821,6 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev, | |||
| 11821 | if (err) { | 11821 | if (err) { |
| 11822 | IPW_ERROR("Failed to register promiscuous network " | 11822 | IPW_ERROR("Failed to register promiscuous network " |
| 11823 | "device (error %d).\n", err); | 11823 | "device (error %d).\n", err); |
| 11824 | unregister_ieee80211(priv->ieee); | ||
| 11825 | unregister_netdev(priv->net_dev); | 11824 | unregister_netdev(priv->net_dev); |
| 11826 | goto out_remove_sysfs; | 11825 | goto out_remove_sysfs; |
| 11827 | } | 11826 | } |
| @@ -11872,7 +11871,6 @@ static void __devexit ipw_pci_remove(struct pci_dev *pdev) | |||
| 11872 | 11871 | ||
| 11873 | mutex_unlock(&priv->mutex); | 11872 | mutex_unlock(&priv->mutex); |
| 11874 | 11873 | ||
| 11875 | unregister_ieee80211(priv->ieee); | ||
| 11876 | unregister_netdev(priv->net_dev); | 11874 | unregister_netdev(priv->net_dev); |
| 11877 | 11875 | ||
| 11878 | if (priv->rxq) { | 11876 | if (priv->rxq) { |
diff --git a/drivers/net/wireless/ipw2x00/libipw.h b/drivers/net/wireless/ipw2x00/libipw.h index f42ade6c2d3e..bf45391172f3 100644 --- a/drivers/net/wireless/ipw2x00/libipw.h +++ b/drivers/net/wireless/ipw2x00/libipw.h | |||
| @@ -1020,7 +1020,6 @@ static inline int libipw_is_cck_rate(u8 rate) | |||
| 1020 | /* ieee80211.c */ | 1020 | /* ieee80211.c */ |
| 1021 | extern void free_ieee80211(struct net_device *dev, int monitor); | 1021 | extern void free_ieee80211(struct net_device *dev, int monitor); |
| 1022 | extern struct net_device *alloc_ieee80211(int sizeof_priv, int monitor); | 1022 | extern struct net_device *alloc_ieee80211(int sizeof_priv, int monitor); |
| 1023 | extern void unregister_ieee80211(struct libipw_device *ieee); | ||
| 1024 | extern int libipw_change_mtu(struct net_device *dev, int new_mtu); | 1023 | extern int libipw_change_mtu(struct net_device *dev, int new_mtu); |
| 1025 | 1024 | ||
| 1026 | extern void libipw_networks_age(struct libipw_device *ieee, | 1025 | extern void libipw_networks_age(struct libipw_device *ieee, |
diff --git a/drivers/net/wireless/ipw2x00/libipw_module.c b/drivers/net/wireless/ipw2x00/libipw_module.c index be5b809ec97a..a0e9f6aed7da 100644 --- a/drivers/net/wireless/ipw2x00/libipw_module.c +++ b/drivers/net/wireless/ipw2x00/libipw_module.c | |||
| @@ -235,19 +235,16 @@ void free_ieee80211(struct net_device *dev, int monitor) | |||
| 235 | libipw_networks_free(ieee); | 235 | libipw_networks_free(ieee); |
| 236 | 236 | ||
| 237 | /* free cfg80211 resources */ | 237 | /* free cfg80211 resources */ |
| 238 | if (!monitor) | 238 | if (!monitor) { |
| 239 | wiphy_unregister(ieee->wdev.wiphy); | ||
| 240 | kfree(ieee->a_band.channels); | ||
| 241 | kfree(ieee->bg_band.channels); | ||
| 239 | wiphy_free(ieee->wdev.wiphy); | 242 | wiphy_free(ieee->wdev.wiphy); |
| 243 | } | ||
| 240 | 244 | ||
| 241 | free_netdev(dev); | 245 | free_netdev(dev); |
| 242 | } | 246 | } |
| 243 | 247 | ||
| 244 | void unregister_ieee80211(struct libipw_device *ieee) | ||
| 245 | { | ||
| 246 | wiphy_unregister(ieee->wdev.wiphy); | ||
| 247 | kfree(ieee->a_band.channels); | ||
| 248 | kfree(ieee->bg_band.channels); | ||
| 249 | } | ||
| 250 | |||
| 251 | #ifdef CONFIG_LIBIPW_DEBUG | 248 | #ifdef CONFIG_LIBIPW_DEBUG |
| 252 | 249 | ||
| 253 | static int debug = 0; | 250 | static int debug = 0; |
| @@ -333,4 +330,3 @@ module_init(libipw_init); | |||
| 333 | 330 | ||
| 334 | EXPORT_SYMBOL(alloc_ieee80211); | 331 | EXPORT_SYMBOL(alloc_ieee80211); |
| 335 | EXPORT_SYMBOL(free_ieee80211); | 332 | EXPORT_SYMBOL(free_ieee80211); |
| 336 | EXPORT_SYMBOL(unregister_ieee80211); | ||
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index 71761b343839..73bbec58341e 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
| @@ -815,6 +815,8 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev) | |||
| 815 | 815 | ||
| 816 | mutex_init(&rt2x00dev->csr_mutex); | 816 | mutex_init(&rt2x00dev->csr_mutex); |
| 817 | 817 | ||
| 818 | set_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); | ||
| 819 | |||
| 818 | /* | 820 | /* |
| 819 | * Make room for rt2x00_intf inside the per-interface | 821 | * Make room for rt2x00_intf inside the per-interface |
| 820 | * structure ieee80211_vif. | 822 | * structure ieee80211_vif. |
| @@ -871,8 +873,6 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev) | |||
| 871 | rt2x00leds_register(rt2x00dev); | 873 | rt2x00leds_register(rt2x00dev); |
| 872 | rt2x00debug_register(rt2x00dev); | 874 | rt2x00debug_register(rt2x00dev); |
| 873 | 875 | ||
| 874 | set_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); | ||
| 875 | |||
| 876 | return 0; | 876 | return 0; |
| 877 | 877 | ||
| 878 | exit: | 878 | exit: |
diff --git a/drivers/net/wireless/rt2x00/rt2x00link.c b/drivers/net/wireless/rt2x00/rt2x00link.c index c64db0ba7f40..c708d0be9155 100644 --- a/drivers/net/wireless/rt2x00/rt2x00link.c +++ b/drivers/net/wireless/rt2x00/rt2x00link.c | |||
| @@ -362,8 +362,9 @@ void rt2x00link_start_tuner(struct rt2x00_dev *rt2x00dev) | |||
| 362 | 362 | ||
| 363 | rt2x00link_reset_tuner(rt2x00dev, false); | 363 | rt2x00link_reset_tuner(rt2x00dev, false); |
| 364 | 364 | ||
| 365 | ieee80211_queue_delayed_work(rt2x00dev->hw, | 365 | if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) |
| 366 | &link->work, LINK_TUNE_INTERVAL); | 366 | ieee80211_queue_delayed_work(rt2x00dev->hw, |
| 367 | &link->work, LINK_TUNE_INTERVAL); | ||
| 367 | } | 368 | } |
| 368 | 369 | ||
| 369 | void rt2x00link_stop_tuner(struct rt2x00_dev *rt2x00dev) | 370 | void rt2x00link_stop_tuner(struct rt2x00_dev *rt2x00dev) |
| @@ -469,8 +470,10 @@ static void rt2x00link_tuner(struct work_struct *work) | |||
| 469 | * Increase tuner counter, and reschedule the next link tuner run. | 470 | * Increase tuner counter, and reschedule the next link tuner run. |
| 470 | */ | 471 | */ |
| 471 | link->count++; | 472 | link->count++; |
| 472 | ieee80211_queue_delayed_work(rt2x00dev->hw, | 473 | |
| 473 | &link->work, LINK_TUNE_INTERVAL); | 474 | if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) |
| 475 | ieee80211_queue_delayed_work(rt2x00dev->hw, | ||
| 476 | &link->work, LINK_TUNE_INTERVAL); | ||
| 474 | } | 477 | } |
| 475 | 478 | ||
| 476 | void rt2x00link_register(struct rt2x00_dev *rt2x00dev) | 479 | void rt2x00link_register(struct rt2x00_dev *rt2x00dev) |
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c index 501544882c2c..f02b48a90593 100644 --- a/drivers/net/wireless/rt2x00/rt2x00usb.c +++ b/drivers/net/wireless/rt2x00/rt2x00usb.c | |||
| @@ -47,6 +47,8 @@ int rt2x00usb_vendor_request(struct rt2x00_dev *rt2x00dev, | |||
| 47 | (requesttype == USB_VENDOR_REQUEST_IN) ? | 47 | (requesttype == USB_VENDOR_REQUEST_IN) ? |
| 48 | usb_rcvctrlpipe(usb_dev, 0) : usb_sndctrlpipe(usb_dev, 0); | 48 | usb_rcvctrlpipe(usb_dev, 0) : usb_sndctrlpipe(usb_dev, 0); |
| 49 | 49 | ||
| 50 | if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) | ||
| 51 | return -ENODEV; | ||
| 50 | 52 | ||
| 51 | for (i = 0; i < REGISTER_BUSY_COUNT; i++) { | 53 | for (i = 0; i < REGISTER_BUSY_COUNT; i++) { |
| 52 | status = usb_control_msg(usb_dev, pipe, request, requesttype, | 54 | status = usb_control_msg(usb_dev, pipe, request, requesttype, |
| @@ -60,8 +62,10 @@ int rt2x00usb_vendor_request(struct rt2x00_dev *rt2x00dev, | |||
| 60 | * -ENODEV: Device has disappeared, no point continuing. | 62 | * -ENODEV: Device has disappeared, no point continuing. |
| 61 | * All other errors: Try again. | 63 | * All other errors: Try again. |
| 62 | */ | 64 | */ |
| 63 | else if (status == -ENODEV) | 65 | else if (status == -ENODEV) { |
| 66 | clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); | ||
| 64 | break; | 67 | break; |
| 68 | } | ||
| 65 | } | 69 | } |
| 66 | 70 | ||
| 67 | ERROR(rt2x00dev, | 71 | ERROR(rt2x00dev, |
| @@ -161,6 +165,9 @@ int rt2x00usb_regbusy_read(struct rt2x00_dev *rt2x00dev, | |||
| 161 | { | 165 | { |
| 162 | unsigned int i; | 166 | unsigned int i; |
| 163 | 167 | ||
| 168 | if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) | ||
| 169 | return -ENODEV; | ||
| 170 | |||
| 164 | for (i = 0; i < REGISTER_BUSY_COUNT; i++) { | 171 | for (i = 0; i < REGISTER_BUSY_COUNT; i++) { |
| 165 | rt2x00usb_register_read_lock(rt2x00dev, offset, reg); | 172 | rt2x00usb_register_read_lock(rt2x00dev, offset, reg); |
| 166 | if (!rt2x00_get_field32(*reg, field)) | 173 | if (!rt2x00_get_field32(*reg, field)) |
diff --git a/drivers/net/wireless/rtl818x/rtl8187_leds.c b/drivers/net/wireless/rtl818x/rtl8187_leds.c index a1c670fc1552..cf8a4a40fdf6 100644 --- a/drivers/net/wireless/rtl818x/rtl8187_leds.c +++ b/drivers/net/wireless/rtl818x/rtl8187_leds.c | |||
| @@ -210,10 +210,10 @@ void rtl8187_leds_exit(struct ieee80211_hw *dev) | |||
| 210 | 210 | ||
| 211 | /* turn the LED off before exiting */ | 211 | /* turn the LED off before exiting */ |
| 212 | ieee80211_queue_delayed_work(dev, &priv->led_off, 0); | 212 | ieee80211_queue_delayed_work(dev, &priv->led_off, 0); |
| 213 | cancel_delayed_work_sync(&priv->led_off); | ||
| 214 | cancel_delayed_work_sync(&priv->led_on); | ||
| 215 | rtl8187_unregister_led(&priv->led_rx); | 213 | rtl8187_unregister_led(&priv->led_rx); |
| 216 | rtl8187_unregister_led(&priv->led_tx); | 214 | rtl8187_unregister_led(&priv->led_tx); |
| 215 | cancel_delayed_work_sync(&priv->led_off); | ||
| 216 | cancel_delayed_work_sync(&priv->led_on); | ||
| 217 | } | 217 | } |
| 218 | #endif /* def CONFIG_RTL8187_LED */ | 218 | #endif /* def CONFIG_RTL8187_LED */ |
| 219 | 219 | ||
