diff options
| author | David S. Miller <davem@davemloft.net> | 2009-02-25 02:52:55 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-02-25 02:52:55 -0500 |
| commit | 0c9a3aaaf30e1d1994de58c554ef97a719e20892 (patch) | |
| tree | 0b803621607fe534f8387f5c7f75cd868958c065 /drivers/net | |
| parent | fef7cc0893146550b286b13c0e6e914556142730 (diff) | |
| parent | 046ee5d26ac91316a8ac0a29c0b33139dc9da20d (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Diffstat (limited to 'drivers/net')
| -rw-r--r-- | drivers/net/wireless/ath9k/main.c | 24 | ||||
| -rw-r--r-- | drivers/net/wireless/orinoco/orinoco.c | 19 | ||||
| -rw-r--r-- | drivers/net/wireless/rtl818x/rtl8187_dev.c | 12 |
3 files changed, 44 insertions, 11 deletions
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c index 727f067aca4f..0e80990d8e84 100644 --- a/drivers/net/wireless/ath9k/main.c +++ b/drivers/net/wireless/ath9k/main.c | |||
| @@ -1538,6 +1538,7 @@ bad2: | |||
| 1538 | bad: | 1538 | bad: |
| 1539 | if (ah) | 1539 | if (ah) |
| 1540 | ath9k_hw_detach(ah); | 1540 | ath9k_hw_detach(ah); |
| 1541 | ath9k_exit_debug(sc); | ||
| 1541 | 1542 | ||
| 1542 | return error; | 1543 | return error; |
| 1543 | } | 1544 | } |
| @@ -1545,7 +1546,7 @@ bad: | |||
| 1545 | static int ath_attach(u16 devid, struct ath_softc *sc) | 1546 | static int ath_attach(u16 devid, struct ath_softc *sc) |
| 1546 | { | 1547 | { |
| 1547 | struct ieee80211_hw *hw = sc->hw; | 1548 | struct ieee80211_hw *hw = sc->hw; |
| 1548 | int error = 0; | 1549 | int error = 0, i; |
| 1549 | 1550 | ||
| 1550 | DPRINTF(sc, ATH_DBG_CONFIG, "Attach ATH hw\n"); | 1551 | DPRINTF(sc, ATH_DBG_CONFIG, "Attach ATH hw\n"); |
| 1551 | 1552 | ||
| @@ -1589,11 +1590,11 @@ static int ath_attach(u16 devid, struct ath_softc *sc) | |||
| 1589 | /* initialize tx/rx engine */ | 1590 | /* initialize tx/rx engine */ |
| 1590 | error = ath_tx_init(sc, ATH_TXBUF); | 1591 | error = ath_tx_init(sc, ATH_TXBUF); |
| 1591 | if (error != 0) | 1592 | if (error != 0) |
| 1592 | goto detach; | 1593 | goto error_attach; |
| 1593 | 1594 | ||
| 1594 | error = ath_rx_init(sc, ATH_RXBUF); | 1595 | error = ath_rx_init(sc, ATH_RXBUF); |
| 1595 | if (error != 0) | 1596 | if (error != 0) |
| 1596 | goto detach; | 1597 | goto error_attach; |
| 1597 | 1598 | ||
| 1598 | #if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE) | 1599 | #if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE) |
| 1599 | /* Initialze h/w Rfkill */ | 1600 | /* Initialze h/w Rfkill */ |
| @@ -1601,8 +1602,9 @@ static int ath_attach(u16 devid, struct ath_softc *sc) | |||
| 1601 | INIT_DELAYED_WORK(&sc->rf_kill.rfkill_poll, ath_rfkill_poll); | 1602 | INIT_DELAYED_WORK(&sc->rf_kill.rfkill_poll, ath_rfkill_poll); |
| 1602 | 1603 | ||
| 1603 | /* Initialize s/w rfkill */ | 1604 | /* Initialize s/w rfkill */ |
| 1604 | if (ath_init_sw_rfkill(sc)) | 1605 | error = ath_init_sw_rfkill(sc); |
| 1605 | goto detach; | 1606 | if (error) |
| 1607 | goto error_attach; | ||
| 1606 | #endif | 1608 | #endif |
| 1607 | 1609 | ||
| 1608 | error = ieee80211_register_hw(hw); | 1610 | error = ieee80211_register_hw(hw); |
| @@ -1611,8 +1613,16 @@ static int ath_attach(u16 devid, struct ath_softc *sc) | |||
| 1611 | ath_init_leds(sc); | 1613 | ath_init_leds(sc); |
| 1612 | 1614 | ||
| 1613 | return 0; | 1615 | return 0; |
| 1614 | detach: | 1616 | |
| 1615 | ath_detach(sc); | 1617 | error_attach: |
| 1618 | /* cleanup tx queues */ | ||
| 1619 | for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) | ||
| 1620 | if (ATH_TXQ_SETUP(sc, i)) | ||
| 1621 | ath_tx_cleanupq(sc, &sc->tx.txq[i]); | ||
| 1622 | |||
| 1623 | ath9k_hw_detach(sc->sc_ah); | ||
| 1624 | ath9k_exit_debug(sc); | ||
| 1625 | |||
| 1616 | return error; | 1626 | return error; |
| 1617 | } | 1627 | } |
| 1618 | 1628 | ||
diff --git a/drivers/net/wireless/orinoco/orinoco.c b/drivers/net/wireless/orinoco/orinoco.c index 45a04faa7818..067d1a9c728b 100644 --- a/drivers/net/wireless/orinoco/orinoco.c +++ b/drivers/net/wireless/orinoco/orinoco.c | |||
| @@ -3157,8 +3157,20 @@ static int orinoco_pm_notifier(struct notifier_block *notifier, | |||
| 3157 | 3157 | ||
| 3158 | return NOTIFY_DONE; | 3158 | return NOTIFY_DONE; |
| 3159 | } | 3159 | } |
| 3160 | |||
| 3161 | static void orinoco_register_pm_notifier(struct orinoco_private *priv) | ||
| 3162 | { | ||
| 3163 | priv->pm_notifier.notifier_call = orinoco_pm_notifier; | ||
| 3164 | register_pm_notifier(&priv->pm_notifier); | ||
| 3165 | } | ||
| 3166 | |||
| 3167 | static void orinoco_unregister_pm_notifier(struct orinoco_private *priv) | ||
| 3168 | { | ||
| 3169 | unregister_pm_notifier(&priv->pm_notifier); | ||
| 3170 | } | ||
| 3160 | #else /* !PM_SLEEP || HERMES_CACHE_FW_ON_INIT */ | 3171 | #else /* !PM_SLEEP || HERMES_CACHE_FW_ON_INIT */ |
| 3161 | #define orinoco_pm_notifier NULL | 3172 | #define orinoco_register_pm_notifier(priv) do { } while(0) |
| 3173 | #define orinoco_unregister_pm_notifier(priv) do { } while(0) | ||
| 3162 | #endif | 3174 | #endif |
| 3163 | 3175 | ||
| 3164 | /********************************************************************/ | 3176 | /********************************************************************/ |
| @@ -3648,8 +3660,7 @@ struct net_device | |||
| 3648 | priv->cached_fw = NULL; | 3660 | priv->cached_fw = NULL; |
| 3649 | 3661 | ||
| 3650 | /* Register PM notifiers */ | 3662 | /* Register PM notifiers */ |
| 3651 | priv->pm_notifier.notifier_call = orinoco_pm_notifier; | 3663 | orinoco_register_pm_notifier(priv); |
| 3652 | register_pm_notifier(&priv->pm_notifier); | ||
| 3653 | 3664 | ||
| 3654 | return dev; | 3665 | return dev; |
| 3655 | } | 3666 | } |
| @@ -3673,7 +3684,7 @@ void free_orinocodev(struct net_device *dev) | |||
| 3673 | kfree(rx_data); | 3684 | kfree(rx_data); |
| 3674 | } | 3685 | } |
| 3675 | 3686 | ||
| 3676 | unregister_pm_notifier(&priv->pm_notifier); | 3687 | orinoco_unregister_pm_notifier(priv); |
| 3677 | orinoco_uncache_fw(priv); | 3688 | orinoco_uncache_fw(priv); |
| 3678 | 3689 | ||
| 3679 | priv->wpa_ie_len = 0; | 3690 | priv->wpa_ie_len = 0; |
diff --git a/drivers/net/wireless/rtl818x/rtl8187_dev.c b/drivers/net/wireless/rtl818x/rtl8187_dev.c index 22bc07ef2f37..f4747a1134ba 100644 --- a/drivers/net/wireless/rtl818x/rtl8187_dev.c +++ b/drivers/net/wireless/rtl818x/rtl8187_dev.c | |||
| @@ -48,6 +48,10 @@ static struct usb_device_id rtl8187_table[] __devinitdata = { | |||
| 48 | {USB_DEVICE(0x0bda, 0x8189), .driver_info = DEVICE_RTL8187B}, | 48 | {USB_DEVICE(0x0bda, 0x8189), .driver_info = DEVICE_RTL8187B}, |
| 49 | {USB_DEVICE(0x0bda, 0x8197), .driver_info = DEVICE_RTL8187B}, | 49 | {USB_DEVICE(0x0bda, 0x8197), .driver_info = DEVICE_RTL8187B}, |
| 50 | {USB_DEVICE(0x0bda, 0x8198), .driver_info = DEVICE_RTL8187B}, | 50 | {USB_DEVICE(0x0bda, 0x8198), .driver_info = DEVICE_RTL8187B}, |
| 51 | /* Surecom */ | ||
| 52 | {USB_DEVICE(0x0769, 0x11F2), .driver_info = DEVICE_RTL8187}, | ||
| 53 | /* Logitech */ | ||
| 54 | {USB_DEVICE(0x0789, 0x010C), .driver_info = DEVICE_RTL8187}, | ||
| 51 | /* Netgear */ | 55 | /* Netgear */ |
| 52 | {USB_DEVICE(0x0846, 0x6100), .driver_info = DEVICE_RTL8187}, | 56 | {USB_DEVICE(0x0846, 0x6100), .driver_info = DEVICE_RTL8187}, |
| 53 | {USB_DEVICE(0x0846, 0x6a00), .driver_info = DEVICE_RTL8187}, | 57 | {USB_DEVICE(0x0846, 0x6a00), .driver_info = DEVICE_RTL8187}, |
| @@ -57,8 +61,16 @@ static struct usb_device_id rtl8187_table[] __devinitdata = { | |||
| 57 | /* Sitecom */ | 61 | /* Sitecom */ |
| 58 | {USB_DEVICE(0x0df6, 0x000d), .driver_info = DEVICE_RTL8187}, | 62 | {USB_DEVICE(0x0df6, 0x000d), .driver_info = DEVICE_RTL8187}, |
| 59 | {USB_DEVICE(0x0df6, 0x0028), .driver_info = DEVICE_RTL8187B}, | 63 | {USB_DEVICE(0x0df6, 0x0028), .driver_info = DEVICE_RTL8187B}, |
| 64 | /* Sphairon Access Systems GmbH */ | ||
| 65 | {USB_DEVICE(0x114B, 0x0150), .driver_info = DEVICE_RTL8187}, | ||
| 66 | /* Dick Smith Electronics */ | ||
| 67 | {USB_DEVICE(0x1371, 0x9401), .driver_info = DEVICE_RTL8187}, | ||
| 60 | /* Abocom */ | 68 | /* Abocom */ |
| 61 | {USB_DEVICE(0x13d1, 0xabe6), .driver_info = DEVICE_RTL8187}, | 69 | {USB_DEVICE(0x13d1, 0xabe6), .driver_info = DEVICE_RTL8187}, |
| 70 | /* Qcom */ | ||
| 71 | {USB_DEVICE(0x18E8, 0x6232), .driver_info = DEVICE_RTL8187}, | ||
| 72 | /* AirLive */ | ||
| 73 | {USB_DEVICE(0x1b75, 0x8187), .driver_info = DEVICE_RTL8187}, | ||
| 62 | {} | 74 | {} |
| 63 | }; | 75 | }; |
| 64 | 76 | ||
