diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-03-17 11:21:20 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-03-17 11:21:20 -0400 |
| commit | 47239561e39bceefecc3cd67f71fcf86a198a8ff (patch) | |
| tree | 9823d0973494ea8acabb744bc3aba42b610fb434 /drivers/net/wireless | |
| parent | ed681a91ab805341675d166a9592551093c0a2d9 (diff) | |
| parent | 5bee17f18b595937e6beafeee5197868a3f74a06 (diff) | |
Merge branch 'linus' into core/printk
Diffstat (limited to 'drivers/net/wireless')
20 files changed, 259 insertions, 133 deletions
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c index a533ed60bb4d..1d77ee9d6e99 100644 --- a/drivers/net/wireless/ath5k/base.c +++ b/drivers/net/wireless/ath5k/base.c | |||
| @@ -1098,6 +1098,42 @@ ath5k_hw_to_driver_rix(struct ath5k_softc *sc, int hw_rix) | |||
| 1098 | * Buffers setup * | 1098 | * Buffers setup * |
| 1099 | \***************/ | 1099 | \***************/ |
| 1100 | 1100 | ||
| 1101 | static | ||
| 1102 | struct sk_buff *ath5k_rx_skb_alloc(struct ath5k_softc *sc, dma_addr_t *skb_addr) | ||
| 1103 | { | ||
| 1104 | struct sk_buff *skb; | ||
| 1105 | unsigned int off; | ||
| 1106 | |||
| 1107 | /* | ||
| 1108 | * Allocate buffer with headroom_needed space for the | ||
| 1109 | * fake physical layer header at the start. | ||
| 1110 | */ | ||
| 1111 | skb = dev_alloc_skb(sc->rxbufsize + sc->cachelsz - 1); | ||
| 1112 | |||
| 1113 | if (!skb) { | ||
| 1114 | ATH5K_ERR(sc, "can't alloc skbuff of size %u\n", | ||
| 1115 | sc->rxbufsize + sc->cachelsz - 1); | ||
| 1116 | return NULL; | ||
| 1117 | } | ||
| 1118 | /* | ||
| 1119 | * Cache-line-align. This is important (for the | ||
| 1120 | * 5210 at least) as not doing so causes bogus data | ||
| 1121 | * in rx'd frames. | ||
| 1122 | */ | ||
| 1123 | off = ((unsigned long)skb->data) % sc->cachelsz; | ||
| 1124 | if (off != 0) | ||
| 1125 | skb_reserve(skb, sc->cachelsz - off); | ||
| 1126 | |||
| 1127 | *skb_addr = pci_map_single(sc->pdev, | ||
| 1128 | skb->data, sc->rxbufsize, PCI_DMA_FROMDEVICE); | ||
| 1129 | if (unlikely(pci_dma_mapping_error(sc->pdev, *skb_addr))) { | ||
| 1130 | ATH5K_ERR(sc, "%s: DMA mapping failed\n", __func__); | ||
| 1131 | dev_kfree_skb(skb); | ||
| 1132 | return NULL; | ||
| 1133 | } | ||
| 1134 | return skb; | ||
| 1135 | } | ||
| 1136 | |||
| 1101 | static int | 1137 | static int |
| 1102 | ath5k_rxbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf) | 1138 | ath5k_rxbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf) |
| 1103 | { | 1139 | { |
| @@ -1105,37 +1141,11 @@ ath5k_rxbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf) | |||
| 1105 | struct sk_buff *skb = bf->skb; | 1141 | struct sk_buff *skb = bf->skb; |
| 1106 | struct ath5k_desc *ds; | 1142 | struct ath5k_desc *ds; |
| 1107 | 1143 | ||
| 1108 | if (likely(skb == NULL)) { | 1144 | if (!skb) { |
| 1109 | unsigned int off; | 1145 | skb = ath5k_rx_skb_alloc(sc, &bf->skbaddr); |
| 1110 | 1146 | if (!skb) | |
| 1111 | /* | ||
| 1112 | * Allocate buffer with headroom_needed space for the | ||
| 1113 | * fake physical layer header at the start. | ||
| 1114 | */ | ||
| 1115 | skb = dev_alloc_skb(sc->rxbufsize + sc->cachelsz - 1); | ||
| 1116 | if (unlikely(skb == NULL)) { | ||
| 1117 | ATH5K_ERR(sc, "can't alloc skbuff of size %u\n", | ||
| 1118 | sc->rxbufsize + sc->cachelsz - 1); | ||
| 1119 | return -ENOMEM; | 1147 | return -ENOMEM; |
| 1120 | } | ||
| 1121 | /* | ||
| 1122 | * Cache-line-align. This is important (for the | ||
| 1123 | * 5210 at least) as not doing so causes bogus data | ||
| 1124 | * in rx'd frames. | ||
| 1125 | */ | ||
| 1126 | off = ((unsigned long)skb->data) % sc->cachelsz; | ||
| 1127 | if (off != 0) | ||
| 1128 | skb_reserve(skb, sc->cachelsz - off); | ||
| 1129 | |||
| 1130 | bf->skb = skb; | 1148 | bf->skb = skb; |
| 1131 | bf->skbaddr = pci_map_single(sc->pdev, | ||
| 1132 | skb->data, sc->rxbufsize, PCI_DMA_FROMDEVICE); | ||
| 1133 | if (unlikely(pci_dma_mapping_error(sc->pdev, bf->skbaddr))) { | ||
| 1134 | ATH5K_ERR(sc, "%s: DMA mapping failed\n", __func__); | ||
| 1135 | dev_kfree_skb(skb); | ||
| 1136 | bf->skb = NULL; | ||
| 1137 | return -ENOMEM; | ||
| 1138 | } | ||
| 1139 | } | 1149 | } |
| 1140 | 1150 | ||
| 1141 | /* | 1151 | /* |
| @@ -1664,7 +1674,8 @@ ath5k_tasklet_rx(unsigned long data) | |||
| 1664 | { | 1674 | { |
| 1665 | struct ieee80211_rx_status rxs = {}; | 1675 | struct ieee80211_rx_status rxs = {}; |
| 1666 | struct ath5k_rx_status rs = {}; | 1676 | struct ath5k_rx_status rs = {}; |
| 1667 | struct sk_buff *skb; | 1677 | struct sk_buff *skb, *next_skb; |
| 1678 | dma_addr_t next_skb_addr; | ||
| 1668 | struct ath5k_softc *sc = (void *)data; | 1679 | struct ath5k_softc *sc = (void *)data; |
| 1669 | struct ath5k_buf *bf, *bf_last; | 1680 | struct ath5k_buf *bf, *bf_last; |
| 1670 | struct ath5k_desc *ds; | 1681 | struct ath5k_desc *ds; |
| @@ -1749,10 +1760,17 @@ ath5k_tasklet_rx(unsigned long data) | |||
| 1749 | goto next; | 1760 | goto next; |
| 1750 | } | 1761 | } |
| 1751 | accept: | 1762 | accept: |
| 1763 | next_skb = ath5k_rx_skb_alloc(sc, &next_skb_addr); | ||
| 1764 | |||
| 1765 | /* | ||
| 1766 | * If we can't replace bf->skb with a new skb under memory | ||
| 1767 | * pressure, just skip this packet | ||
| 1768 | */ | ||
| 1769 | if (!next_skb) | ||
| 1770 | goto next; | ||
| 1771 | |||
| 1752 | pci_unmap_single(sc->pdev, bf->skbaddr, sc->rxbufsize, | 1772 | pci_unmap_single(sc->pdev, bf->skbaddr, sc->rxbufsize, |
| 1753 | PCI_DMA_FROMDEVICE); | 1773 | PCI_DMA_FROMDEVICE); |
| 1754 | bf->skb = NULL; | ||
| 1755 | |||
| 1756 | skb_put(skb, rs.rs_datalen); | 1774 | skb_put(skb, rs.rs_datalen); |
| 1757 | 1775 | ||
| 1758 | /* The MAC header is padded to have 32-bit boundary if the | 1776 | /* The MAC header is padded to have 32-bit boundary if the |
| @@ -1825,6 +1843,9 @@ accept: | |||
| 1825 | ath5k_check_ibss_tsf(sc, skb, &rxs); | 1843 | ath5k_check_ibss_tsf(sc, skb, &rxs); |
| 1826 | 1844 | ||
| 1827 | __ieee80211_rx(sc->hw, skb, &rxs); | 1845 | __ieee80211_rx(sc->hw, skb, &rxs); |
| 1846 | |||
| 1847 | bf->skb = next_skb; | ||
| 1848 | bf->skbaddr = next_skb_addr; | ||
| 1828 | next: | 1849 | next: |
| 1829 | list_move_tail(&bf->list, &sc->rxbuf); | 1850 | list_move_tail(&bf->list, &sc->rxbuf); |
| 1830 | } while (ath5k_rxbuf_setup(sc, bf) == 0); | 1851 | } while (ath5k_rxbuf_setup(sc, bf) == 0); |
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/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index b35c8813bef4..129e2d330abb 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
| @@ -3868,7 +3868,7 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 3868 | } | 3868 | } |
| 3869 | err = iwl_eeprom_check_version(priv); | 3869 | err = iwl_eeprom_check_version(priv); |
| 3870 | if (err) | 3870 | if (err) |
| 3871 | goto out_iounmap; | 3871 | goto out_free_eeprom; |
| 3872 | 3872 | ||
| 3873 | /* extract MAC Address */ | 3873 | /* extract MAC Address */ |
| 3874 | iwl_eeprom_get_mac(priv, priv->mac_addr); | 3874 | iwl_eeprom_get_mac(priv, priv->mac_addr); |
| @@ -3945,6 +3945,8 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 3945 | return 0; | 3945 | return 0; |
| 3946 | 3946 | ||
| 3947 | out_remove_sysfs: | 3947 | out_remove_sysfs: |
| 3948 | destroy_workqueue(priv->workqueue); | ||
| 3949 | priv->workqueue = NULL; | ||
| 3948 | sysfs_remove_group(&pdev->dev.kobj, &iwl_attribute_group); | 3950 | sysfs_remove_group(&pdev->dev.kobj, &iwl_attribute_group); |
| 3949 | out_uninit_drv: | 3951 | out_uninit_drv: |
| 3950 | iwl_uninit_drv(priv); | 3952 | iwl_uninit_drv(priv); |
| @@ -3953,8 +3955,8 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 3953 | out_iounmap: | 3955 | out_iounmap: |
| 3954 | pci_iounmap(pdev, priv->hw_base); | 3956 | pci_iounmap(pdev, priv->hw_base); |
| 3955 | out_pci_release_regions: | 3957 | out_pci_release_regions: |
| 3956 | pci_release_regions(pdev); | ||
| 3957 | pci_set_drvdata(pdev, NULL); | 3958 | pci_set_drvdata(pdev, NULL); |
| 3959 | pci_release_regions(pdev); | ||
| 3958 | out_pci_disable_device: | 3960 | out_pci_disable_device: |
| 3959 | pci_disable_device(pdev); | 3961 | pci_disable_device(pdev); |
| 3960 | out_ieee80211_free_hw: | 3962 | out_ieee80211_free_hw: |
| @@ -4042,6 +4044,19 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state) | |||
| 4042 | priv->is_open = 1; | 4044 | priv->is_open = 1; |
| 4043 | } | 4045 | } |
| 4044 | 4046 | ||
| 4047 | /* pci driver assumes state will be saved in this function. | ||
| 4048 | * pci state is saved and device disabled when interface is | ||
| 4049 | * stopped, so at this time pci device will always be disabled - | ||
| 4050 | * whether interface was started or not. saving pci state now will | ||
| 4051 | * cause saved state be that of a disabled device, which will cause | ||
| 4052 | * problems during resume in that we will end up with a disabled device. | ||
| 4053 | * | ||
| 4054 | * indicate that the current saved state (from when interface was | ||
| 4055 | * stopped) is valid. if interface was never up at time of suspend | ||
| 4056 | * then the saved state will still be valid as it was saved during | ||
| 4057 | * .probe. */ | ||
| 4058 | pdev->state_saved = true; | ||
| 4059 | |||
| 4045 | pci_set_power_state(pdev, PCI_D3hot); | 4060 | pci_set_power_state(pdev, PCI_D3hot); |
| 4046 | 4061 | ||
| 4047 | return 0; | 4062 | return 0; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c index 412f66bac1af..70a8b21ca39b 100644 --- a/drivers/net/wireless/iwlwifi/iwl-sta.c +++ b/drivers/net/wireless/iwlwifi/iwl-sta.c | |||
| @@ -480,6 +480,9 @@ void iwl_clear_stations_table(struct iwl_priv *priv) | |||
| 480 | priv->num_stations = 0; | 480 | priv->num_stations = 0; |
| 481 | memset(priv->stations, 0, sizeof(priv->stations)); | 481 | memset(priv->stations, 0, sizeof(priv->stations)); |
| 482 | 482 | ||
| 483 | /* clean ucode key table bit map */ | ||
| 484 | priv->ucode_key_table = 0; | ||
| 485 | |||
| 483 | spin_unlock_irqrestore(&priv->sta_lock, flags); | 486 | spin_unlock_irqrestore(&priv->sta_lock, flags); |
| 484 | } | 487 | } |
| 485 | EXPORT_SYMBOL(iwl_clear_stations_table); | 488 | EXPORT_SYMBOL(iwl_clear_stations_table); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c index b0ee86c62685..ab13ff22a8c0 100644 --- a/drivers/net/wireless/iwlwifi/iwl-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-tx.c | |||
| @@ -148,7 +148,7 @@ static void iwl_hw_txq_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq) | |||
| 148 | pci_unmap_single(dev, | 148 | pci_unmap_single(dev, |
| 149 | pci_unmap_addr(&txq->cmd[index]->meta, mapping), | 149 | pci_unmap_addr(&txq->cmd[index]->meta, mapping), |
| 150 | pci_unmap_len(&txq->cmd[index]->meta, len), | 150 | pci_unmap_len(&txq->cmd[index]->meta, len), |
| 151 | PCI_DMA_TODEVICE); | 151 | PCI_DMA_BIDIRECTIONAL); |
| 152 | 152 | ||
| 153 | /* Unmap chunks, if any. */ | 153 | /* Unmap chunks, if any. */ |
| 154 | for (i = 1; i < num_tbs; i++) { | 154 | for (i = 1; i < num_tbs; i++) { |
| @@ -964,7 +964,7 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb) | |||
| 964 | * within command buffer array. */ | 964 | * within command buffer array. */ |
| 965 | txcmd_phys = pci_map_single(priv->pci_dev, | 965 | txcmd_phys = pci_map_single(priv->pci_dev, |
| 966 | out_cmd, sizeof(struct iwl_cmd), | 966 | out_cmd, sizeof(struct iwl_cmd), |
| 967 | PCI_DMA_TODEVICE); | 967 | PCI_DMA_BIDIRECTIONAL); |
| 968 | pci_unmap_addr_set(&out_cmd->meta, mapping, txcmd_phys); | 968 | pci_unmap_addr_set(&out_cmd->meta, mapping, txcmd_phys); |
| 969 | pci_unmap_len_set(&out_cmd->meta, len, sizeof(struct iwl_cmd)); | 969 | pci_unmap_len_set(&out_cmd->meta, len, sizeof(struct iwl_cmd)); |
| 970 | /* Add buffer containing Tx command and MAC(!) header to TFD's | 970 | /* Add buffer containing Tx command and MAC(!) header to TFD's |
| @@ -1115,7 +1115,7 @@ int iwl_enqueue_hcmd(struct iwl_priv *priv, struct iwl_host_cmd *cmd) | |||
| 1115 | IWL_MAX_SCAN_SIZE : sizeof(struct iwl_cmd); | 1115 | IWL_MAX_SCAN_SIZE : sizeof(struct iwl_cmd); |
| 1116 | 1116 | ||
| 1117 | phys_addr = pci_map_single(priv->pci_dev, out_cmd, | 1117 | phys_addr = pci_map_single(priv->pci_dev, out_cmd, |
| 1118 | len, PCI_DMA_TODEVICE); | 1118 | len, PCI_DMA_BIDIRECTIONAL); |
| 1119 | pci_unmap_addr_set(&out_cmd->meta, mapping, phys_addr); | 1119 | pci_unmap_addr_set(&out_cmd->meta, mapping, phys_addr); |
| 1120 | pci_unmap_len_set(&out_cmd->meta, len, len); | 1120 | pci_unmap_len_set(&out_cmd->meta, len, len); |
| 1121 | phys_addr += offsetof(struct iwl_cmd, hdr); | 1121 | phys_addr += offsetof(struct iwl_cmd, hdr); |
| @@ -1212,7 +1212,7 @@ static void iwl_hcmd_queue_reclaim(struct iwl_priv *priv, int txq_id, | |||
| 1212 | pci_unmap_single(priv->pci_dev, | 1212 | pci_unmap_single(priv->pci_dev, |
| 1213 | pci_unmap_addr(&txq->cmd[cmd_idx]->meta, mapping), | 1213 | pci_unmap_addr(&txq->cmd[cmd_idx]->meta, mapping), |
| 1214 | pci_unmap_len(&txq->cmd[cmd_idx]->meta, len), | 1214 | pci_unmap_len(&txq->cmd[cmd_idx]->meta, len), |
| 1215 | PCI_DMA_TODEVICE); | 1215 | PCI_DMA_BIDIRECTIONAL); |
| 1216 | 1216 | ||
| 1217 | for (idx = iwl_queue_inc_wrap(idx, q->n_bd); q->read_ptr != idx; | 1217 | for (idx = iwl_queue_inc_wrap(idx, q->n_bd); q->read_ptr != idx; |
| 1218 | q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd)) { | 1218 | q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd)) { |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 95d01984c80e..57dd34e256d8 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
| @@ -7911,7 +7911,7 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e | |||
| 7911 | CSR_GP_CNTRL_REG_FLAG_MAC_CLOCK_READY, 25000); | 7911 | CSR_GP_CNTRL_REG_FLAG_MAC_CLOCK_READY, 25000); |
| 7912 | if (err < 0) { | 7912 | if (err < 0) { |
| 7913 | IWL_DEBUG_INFO("Failed to init the card\n"); | 7913 | IWL_DEBUG_INFO("Failed to init the card\n"); |
| 7914 | goto out_remove_sysfs; | 7914 | goto out_iounmap; |
| 7915 | } | 7915 | } |
| 7916 | 7916 | ||
| 7917 | /*********************** | 7917 | /*********************** |
| @@ -7921,7 +7921,7 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e | |||
| 7921 | err = iwl3945_eeprom_init(priv); | 7921 | err = iwl3945_eeprom_init(priv); |
| 7922 | if (err) { | 7922 | if (err) { |
| 7923 | IWL_ERROR("Unable to init EEPROM\n"); | 7923 | IWL_ERROR("Unable to init EEPROM\n"); |
| 7924 | goto out_remove_sysfs; | 7924 | goto out_iounmap; |
| 7925 | } | 7925 | } |
| 7926 | /* MAC Address location in EEPROM same for 3945/4965 */ | 7926 | /* MAC Address location in EEPROM same for 3945/4965 */ |
| 7927 | get_eeprom_mac(priv, priv->mac_addr); | 7927 | get_eeprom_mac(priv, priv->mac_addr); |
| @@ -7975,7 +7975,7 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e | |||
| 7975 | err = iwl3945_init_channel_map(priv); | 7975 | err = iwl3945_init_channel_map(priv); |
| 7976 | if (err) { | 7976 | if (err) { |
| 7977 | IWL_ERROR("initializing regulatory failed: %d\n", err); | 7977 | IWL_ERROR("initializing regulatory failed: %d\n", err); |
| 7978 | goto out_release_irq; | 7978 | goto out_unset_hw_setting; |
| 7979 | } | 7979 | } |
| 7980 | 7980 | ||
| 7981 | err = iwl3945_init_geos(priv); | 7981 | err = iwl3945_init_geos(priv); |
| @@ -8045,25 +8045,22 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e | |||
| 8045 | return 0; | 8045 | return 0; |
| 8046 | 8046 | ||
| 8047 | out_remove_sysfs: | 8047 | out_remove_sysfs: |
| 8048 | destroy_workqueue(priv->workqueue); | ||
| 8049 | priv->workqueue = NULL; | ||
| 8048 | sysfs_remove_group(&pdev->dev.kobj, &iwl3945_attribute_group); | 8050 | sysfs_remove_group(&pdev->dev.kobj, &iwl3945_attribute_group); |
| 8049 | out_free_geos: | 8051 | out_free_geos: |
| 8050 | iwl3945_free_geos(priv); | 8052 | iwl3945_free_geos(priv); |
| 8051 | out_free_channel_map: | 8053 | out_free_channel_map: |
| 8052 | iwl3945_free_channel_map(priv); | 8054 | iwl3945_free_channel_map(priv); |
| 8053 | 8055 | out_unset_hw_setting: | |
| 8054 | |||
| 8055 | out_release_irq: | ||
| 8056 | destroy_workqueue(priv->workqueue); | ||
| 8057 | priv->workqueue = NULL; | ||
| 8058 | iwl3945_unset_hw_setting(priv); | 8056 | iwl3945_unset_hw_setting(priv); |
| 8059 | |||
| 8060 | out_iounmap: | 8057 | out_iounmap: |
| 8061 | pci_iounmap(pdev, priv->hw_base); | 8058 | pci_iounmap(pdev, priv->hw_base); |
| 8062 | out_pci_release_regions: | 8059 | out_pci_release_regions: |
| 8063 | pci_release_regions(pdev); | 8060 | pci_release_regions(pdev); |
| 8064 | out_pci_disable_device: | 8061 | out_pci_disable_device: |
| 8065 | pci_disable_device(pdev); | ||
| 8066 | pci_set_drvdata(pdev, NULL); | 8062 | pci_set_drvdata(pdev, NULL); |
| 8063 | pci_disable_device(pdev); | ||
| 8067 | out_ieee80211_free_hw: | 8064 | out_ieee80211_free_hw: |
| 8068 | ieee80211_free_hw(priv->hw); | 8065 | ieee80211_free_hw(priv->hw); |
| 8069 | out: | 8066 | out: |
| @@ -8143,6 +8140,19 @@ static int iwl3945_pci_suspend(struct pci_dev *pdev, pm_message_t state) | |||
| 8143 | priv->is_open = 1; | 8140 | priv->is_open = 1; |
| 8144 | } | 8141 | } |
| 8145 | 8142 | ||
| 8143 | /* pci driver assumes state will be saved in this function. | ||
| 8144 | * pci state is saved and device disabled when interface is | ||
| 8145 | * stopped, so at this time pci device will always be disabled - | ||
| 8146 | * whether interface was started or not. saving pci state now will | ||
| 8147 | * cause saved state be that of a disabled device, which will cause | ||
| 8148 | * problems during resume in that we will end up with a disabled device. | ||
| 8149 | * | ||
| 8150 | * indicate that the current saved state (from when interface was | ||
| 8151 | * stopped) is valid. if interface was never up at time of suspend | ||
| 8152 | * then the saved state will still be valid as it was saved during | ||
| 8153 | * .probe. */ | ||
| 8154 | pdev->state_saved = true; | ||
| 8155 | |||
| 8146 | pci_set_power_state(pdev, PCI_D3hot); | 8156 | pci_set_power_state(pdev, PCI_D3hot); |
| 8147 | 8157 | ||
| 8148 | return 0; | 8158 | return 0; |
diff --git a/drivers/net/wireless/libertas/ethtool.c b/drivers/net/wireless/libertas/ethtool.c index 61d2f50470c8..b118a35ec605 100644 --- a/drivers/net/wireless/libertas/ethtool.c +++ b/drivers/net/wireless/libertas/ethtool.c | |||
| @@ -23,7 +23,7 @@ static const char * mesh_stat_strings[]= { | |||
| 23 | static void lbs_ethtool_get_drvinfo(struct net_device *dev, | 23 | static void lbs_ethtool_get_drvinfo(struct net_device *dev, |
| 24 | struct ethtool_drvinfo *info) | 24 | struct ethtool_drvinfo *info) |
| 25 | { | 25 | { |
| 26 | struct lbs_private *priv = netdev_priv(dev); | 26 | struct lbs_private *priv = dev->ml_priv; |
| 27 | 27 | ||
| 28 | snprintf(info->fw_version, 32, "%u.%u.%u.p%u", | 28 | snprintf(info->fw_version, 32, "%u.%u.%u.p%u", |
| 29 | priv->fwrelease >> 24 & 0xff, | 29 | priv->fwrelease >> 24 & 0xff, |
| @@ -47,7 +47,7 @@ static int lbs_ethtool_get_eeprom_len(struct net_device *dev) | |||
| 47 | static int lbs_ethtool_get_eeprom(struct net_device *dev, | 47 | static int lbs_ethtool_get_eeprom(struct net_device *dev, |
| 48 | struct ethtool_eeprom *eeprom, u8 * bytes) | 48 | struct ethtool_eeprom *eeprom, u8 * bytes) |
| 49 | { | 49 | { |
| 50 | struct lbs_private *priv = netdev_priv(dev); | 50 | struct lbs_private *priv = dev->ml_priv; |
| 51 | struct cmd_ds_802_11_eeprom_access cmd; | 51 | struct cmd_ds_802_11_eeprom_access cmd; |
| 52 | int ret; | 52 | int ret; |
| 53 | 53 | ||
| @@ -76,7 +76,7 @@ out: | |||
| 76 | static void lbs_ethtool_get_stats(struct net_device *dev, | 76 | static void lbs_ethtool_get_stats(struct net_device *dev, |
| 77 | struct ethtool_stats *stats, uint64_t *data) | 77 | struct ethtool_stats *stats, uint64_t *data) |
| 78 | { | 78 | { |
| 79 | struct lbs_private *priv = netdev_priv(dev); | 79 | struct lbs_private *priv = dev->ml_priv; |
| 80 | struct cmd_ds_mesh_access mesh_access; | 80 | struct cmd_ds_mesh_access mesh_access; |
| 81 | int ret; | 81 | int ret; |
| 82 | 82 | ||
| @@ -113,7 +113,7 @@ static void lbs_ethtool_get_stats(struct net_device *dev, | |||
| 113 | 113 | ||
| 114 | static int lbs_ethtool_get_sset_count(struct net_device *dev, int sset) | 114 | static int lbs_ethtool_get_sset_count(struct net_device *dev, int sset) |
| 115 | { | 115 | { |
| 116 | struct lbs_private *priv = netdev_priv(dev); | 116 | struct lbs_private *priv = dev->ml_priv; |
| 117 | 117 | ||
| 118 | if (sset == ETH_SS_STATS && dev == priv->mesh_dev) | 118 | if (sset == ETH_SS_STATS && dev == priv->mesh_dev) |
| 119 | return MESH_STATS_NUM; | 119 | return MESH_STATS_NUM; |
| @@ -143,7 +143,7 @@ static void lbs_ethtool_get_strings(struct net_device *dev, | |||
| 143 | static void lbs_ethtool_get_wol(struct net_device *dev, | 143 | static void lbs_ethtool_get_wol(struct net_device *dev, |
| 144 | struct ethtool_wolinfo *wol) | 144 | struct ethtool_wolinfo *wol) |
| 145 | { | 145 | { |
| 146 | struct lbs_private *priv = netdev_priv(dev); | 146 | struct lbs_private *priv = dev->ml_priv; |
| 147 | 147 | ||
| 148 | if (priv->wol_criteria == 0xffffffff) { | 148 | if (priv->wol_criteria == 0xffffffff) { |
| 149 | /* Interface driver didn't configure wake */ | 149 | /* Interface driver didn't configure wake */ |
| @@ -166,7 +166,7 @@ static void lbs_ethtool_get_wol(struct net_device *dev, | |||
| 166 | static int lbs_ethtool_set_wol(struct net_device *dev, | 166 | static int lbs_ethtool_set_wol(struct net_device *dev, |
| 167 | struct ethtool_wolinfo *wol) | 167 | struct ethtool_wolinfo *wol) |
| 168 | { | 168 | { |
| 169 | struct lbs_private *priv = netdev_priv(dev); | 169 | struct lbs_private *priv = dev->ml_priv; |
| 170 | uint32_t criteria = 0; | 170 | uint32_t criteria = 0; |
| 171 | 171 | ||
| 172 | if (priv->wol_criteria == 0xffffffff && wol->wolopts) | 172 | if (priv->wol_criteria == 0xffffffff && wol->wolopts) |
diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c index 2fc637ad85c7..ea3dc038be76 100644 --- a/drivers/net/wireless/libertas/if_usb.c +++ b/drivers/net/wireless/libertas/if_usb.c | |||
| @@ -59,7 +59,7 @@ static int if_usb_reset_device(struct if_usb_card *cardp); | |||
| 59 | static ssize_t if_usb_firmware_set(struct device *dev, | 59 | static ssize_t if_usb_firmware_set(struct device *dev, |
| 60 | struct device_attribute *attr, const char *buf, size_t count) | 60 | struct device_attribute *attr, const char *buf, size_t count) |
| 61 | { | 61 | { |
| 62 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 62 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 63 | struct if_usb_card *cardp = priv->card; | 63 | struct if_usb_card *cardp = priv->card; |
| 64 | char fwname[FIRMWARE_NAME_MAX]; | 64 | char fwname[FIRMWARE_NAME_MAX]; |
| 65 | int ret; | 65 | int ret; |
| @@ -86,7 +86,7 @@ static DEVICE_ATTR(lbs_flash_fw, 0200, NULL, if_usb_firmware_set); | |||
| 86 | static ssize_t if_usb_boot2_set(struct device *dev, | 86 | static ssize_t if_usb_boot2_set(struct device *dev, |
| 87 | struct device_attribute *attr, const char *buf, size_t count) | 87 | struct device_attribute *attr, const char *buf, size_t count) |
| 88 | { | 88 | { |
| 89 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 89 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 90 | struct if_usb_card *cardp = priv->card; | 90 | struct if_usb_card *cardp = priv->card; |
| 91 | char fwname[FIRMWARE_NAME_MAX]; | 91 | char fwname[FIRMWARE_NAME_MAX]; |
| 92 | int ret; | 92 | int ret; |
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c index 4e0007d20030..f76623e0ff9a 100644 --- a/drivers/net/wireless/libertas/main.c +++ b/drivers/net/wireless/libertas/main.c | |||
| @@ -222,7 +222,7 @@ u8 lbs_data_rate_to_fw_index(u32 rate) | |||
| 222 | static ssize_t lbs_anycast_get(struct device *dev, | 222 | static ssize_t lbs_anycast_get(struct device *dev, |
| 223 | struct device_attribute *attr, char * buf) | 223 | struct device_attribute *attr, char * buf) |
| 224 | { | 224 | { |
| 225 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 225 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 226 | struct cmd_ds_mesh_access mesh_access; | 226 | struct cmd_ds_mesh_access mesh_access; |
| 227 | int ret; | 227 | int ret; |
| 228 | 228 | ||
| @@ -241,7 +241,7 @@ static ssize_t lbs_anycast_get(struct device *dev, | |||
| 241 | static ssize_t lbs_anycast_set(struct device *dev, | 241 | static ssize_t lbs_anycast_set(struct device *dev, |
| 242 | struct device_attribute *attr, const char * buf, size_t count) | 242 | struct device_attribute *attr, const char * buf, size_t count) |
| 243 | { | 243 | { |
| 244 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 244 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 245 | struct cmd_ds_mesh_access mesh_access; | 245 | struct cmd_ds_mesh_access mesh_access; |
| 246 | uint32_t datum; | 246 | uint32_t datum; |
| 247 | int ret; | 247 | int ret; |
| @@ -263,7 +263,7 @@ static ssize_t lbs_anycast_set(struct device *dev, | |||
| 263 | static ssize_t lbs_prb_rsp_limit_get(struct device *dev, | 263 | static ssize_t lbs_prb_rsp_limit_get(struct device *dev, |
| 264 | struct device_attribute *attr, char *buf) | 264 | struct device_attribute *attr, char *buf) |
| 265 | { | 265 | { |
| 266 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 266 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 267 | struct cmd_ds_mesh_access mesh_access; | 267 | struct cmd_ds_mesh_access mesh_access; |
| 268 | int ret; | 268 | int ret; |
| 269 | u32 retry_limit; | 269 | u32 retry_limit; |
| @@ -286,7 +286,7 @@ static ssize_t lbs_prb_rsp_limit_get(struct device *dev, | |||
| 286 | static ssize_t lbs_prb_rsp_limit_set(struct device *dev, | 286 | static ssize_t lbs_prb_rsp_limit_set(struct device *dev, |
| 287 | struct device_attribute *attr, const char *buf, size_t count) | 287 | struct device_attribute *attr, const char *buf, size_t count) |
| 288 | { | 288 | { |
| 289 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 289 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 290 | struct cmd_ds_mesh_access mesh_access; | 290 | struct cmd_ds_mesh_access mesh_access; |
| 291 | int ret; | 291 | int ret; |
| 292 | unsigned long retry_limit; | 292 | unsigned long retry_limit; |
| @@ -321,7 +321,7 @@ static void lbs_remove_mesh(struct lbs_private *priv); | |||
| 321 | static ssize_t lbs_rtap_get(struct device *dev, | 321 | static ssize_t lbs_rtap_get(struct device *dev, |
| 322 | struct device_attribute *attr, char * buf) | 322 | struct device_attribute *attr, char * buf) |
| 323 | { | 323 | { |
| 324 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 324 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 325 | return snprintf(buf, 5, "0x%X\n", priv->monitormode); | 325 | return snprintf(buf, 5, "0x%X\n", priv->monitormode); |
| 326 | } | 326 | } |
| 327 | 327 | ||
| @@ -332,7 +332,7 @@ static ssize_t lbs_rtap_set(struct device *dev, | |||
| 332 | struct device_attribute *attr, const char * buf, size_t count) | 332 | struct device_attribute *attr, const char * buf, size_t count) |
| 333 | { | 333 | { |
| 334 | int monitor_mode; | 334 | int monitor_mode; |
| 335 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 335 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 336 | 336 | ||
| 337 | sscanf(buf, "%x", &monitor_mode); | 337 | sscanf(buf, "%x", &monitor_mode); |
| 338 | if (monitor_mode) { | 338 | if (monitor_mode) { |
| @@ -383,7 +383,7 @@ static DEVICE_ATTR(lbs_rtap, 0644, lbs_rtap_get, lbs_rtap_set ); | |||
| 383 | static ssize_t lbs_mesh_get(struct device *dev, | 383 | static ssize_t lbs_mesh_get(struct device *dev, |
| 384 | struct device_attribute *attr, char * buf) | 384 | struct device_attribute *attr, char * buf) |
| 385 | { | 385 | { |
| 386 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 386 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 387 | return snprintf(buf, 5, "0x%X\n", !!priv->mesh_dev); | 387 | return snprintf(buf, 5, "0x%X\n", !!priv->mesh_dev); |
| 388 | } | 388 | } |
| 389 | 389 | ||
| @@ -393,7 +393,7 @@ static ssize_t lbs_mesh_get(struct device *dev, | |||
| 393 | static ssize_t lbs_mesh_set(struct device *dev, | 393 | static ssize_t lbs_mesh_set(struct device *dev, |
| 394 | struct device_attribute *attr, const char * buf, size_t count) | 394 | struct device_attribute *attr, const char * buf, size_t count) |
| 395 | { | 395 | { |
| 396 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 396 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 397 | int enable; | 397 | int enable; |
| 398 | int ret, action = CMD_ACT_MESH_CONFIG_STOP; | 398 | int ret, action = CMD_ACT_MESH_CONFIG_STOP; |
| 399 | 399 | ||
| @@ -452,7 +452,7 @@ static struct attribute_group lbs_mesh_attr_group = { | |||
| 452 | */ | 452 | */ |
| 453 | static int lbs_dev_open(struct net_device *dev) | 453 | static int lbs_dev_open(struct net_device *dev) |
| 454 | { | 454 | { |
| 455 | struct lbs_private *priv = netdev_priv(dev) ; | 455 | struct lbs_private *priv = dev->ml_priv; |
| 456 | int ret = 0; | 456 | int ret = 0; |
| 457 | 457 | ||
| 458 | lbs_deb_enter(LBS_DEB_NET); | 458 | lbs_deb_enter(LBS_DEB_NET); |
| @@ -521,7 +521,7 @@ static int lbs_mesh_stop(struct net_device *dev) | |||
| 521 | */ | 521 | */ |
| 522 | static int lbs_eth_stop(struct net_device *dev) | 522 | static int lbs_eth_stop(struct net_device *dev) |
| 523 | { | 523 | { |
| 524 | struct lbs_private *priv = netdev_priv(dev); | 524 | struct lbs_private *priv = dev->ml_priv; |
| 525 | 525 | ||
| 526 | lbs_deb_enter(LBS_DEB_NET); | 526 | lbs_deb_enter(LBS_DEB_NET); |
| 527 | 527 | ||
| @@ -538,7 +538,7 @@ static int lbs_eth_stop(struct net_device *dev) | |||
| 538 | 538 | ||
| 539 | static void lbs_tx_timeout(struct net_device *dev) | 539 | static void lbs_tx_timeout(struct net_device *dev) |
| 540 | { | 540 | { |
| 541 | struct lbs_private *priv = netdev_priv(dev); | 541 | struct lbs_private *priv = dev->ml_priv; |
| 542 | 542 | ||
| 543 | lbs_deb_enter(LBS_DEB_TX); | 543 | lbs_deb_enter(LBS_DEB_TX); |
| 544 | 544 | ||
| @@ -590,7 +590,7 @@ EXPORT_SYMBOL_GPL(lbs_host_to_card_done); | |||
| 590 | */ | 590 | */ |
| 591 | static struct net_device_stats *lbs_get_stats(struct net_device *dev) | 591 | static struct net_device_stats *lbs_get_stats(struct net_device *dev) |
| 592 | { | 592 | { |
| 593 | struct lbs_private *priv = netdev_priv(dev); | 593 | struct lbs_private *priv = dev->ml_priv; |
| 594 | 594 | ||
| 595 | lbs_deb_enter(LBS_DEB_NET); | 595 | lbs_deb_enter(LBS_DEB_NET); |
| 596 | return &priv->stats; | 596 | return &priv->stats; |
| @@ -599,7 +599,7 @@ static struct net_device_stats *lbs_get_stats(struct net_device *dev) | |||
| 599 | static int lbs_set_mac_address(struct net_device *dev, void *addr) | 599 | static int lbs_set_mac_address(struct net_device *dev, void *addr) |
| 600 | { | 600 | { |
| 601 | int ret = 0; | 601 | int ret = 0; |
| 602 | struct lbs_private *priv = netdev_priv(dev); | 602 | struct lbs_private *priv = dev->ml_priv; |
| 603 | struct sockaddr *phwaddr = addr; | 603 | struct sockaddr *phwaddr = addr; |
| 604 | struct cmd_ds_802_11_mac_address cmd; | 604 | struct cmd_ds_802_11_mac_address cmd; |
| 605 | 605 | ||
| @@ -732,7 +732,7 @@ static void lbs_set_mcast_worker(struct work_struct *work) | |||
| 732 | 732 | ||
| 733 | static void lbs_set_multicast_list(struct net_device *dev) | 733 | static void lbs_set_multicast_list(struct net_device *dev) |
| 734 | { | 734 | { |
| 735 | struct lbs_private *priv = netdev_priv(dev); | 735 | struct lbs_private *priv = dev->ml_priv; |
| 736 | 736 | ||
| 737 | schedule_work(&priv->mcast_work); | 737 | schedule_work(&priv->mcast_work); |
| 738 | } | 738 | } |
| @@ -748,7 +748,7 @@ static void lbs_set_multicast_list(struct net_device *dev) | |||
| 748 | static int lbs_thread(void *data) | 748 | static int lbs_thread(void *data) |
| 749 | { | 749 | { |
| 750 | struct net_device *dev = data; | 750 | struct net_device *dev = data; |
| 751 | struct lbs_private *priv = netdev_priv(dev); | 751 | struct lbs_private *priv = dev->ml_priv; |
| 752 | wait_queue_t wait; | 752 | wait_queue_t wait; |
| 753 | 753 | ||
| 754 | lbs_deb_enter(LBS_DEB_THREAD); | 754 | lbs_deb_enter(LBS_DEB_THREAD); |
| @@ -1184,6 +1184,7 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev) | |||
| 1184 | goto done; | 1184 | goto done; |
| 1185 | } | 1185 | } |
| 1186 | priv = netdev_priv(dev); | 1186 | priv = netdev_priv(dev); |
| 1187 | dev->ml_priv = priv; | ||
| 1187 | 1188 | ||
| 1188 | if (lbs_init_adapter(priv)) { | 1189 | if (lbs_init_adapter(priv)) { |
| 1189 | lbs_pr_err("failed to initialize adapter structure.\n"); | 1190 | lbs_pr_err("failed to initialize adapter structure.\n"); |
diff --git a/drivers/net/wireless/libertas/persistcfg.c b/drivers/net/wireless/libertas/persistcfg.c index d42b7a5a1b3f..18fe29faf99b 100644 --- a/drivers/net/wireless/libertas/persistcfg.c +++ b/drivers/net/wireless/libertas/persistcfg.c | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | static int mesh_get_default_parameters(struct device *dev, | 18 | static int mesh_get_default_parameters(struct device *dev, |
| 19 | struct mrvl_mesh_defaults *defs) | 19 | struct mrvl_mesh_defaults *defs) |
| 20 | { | 20 | { |
| 21 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 21 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 22 | struct cmd_ds_mesh_config cmd; | 22 | struct cmd_ds_mesh_config cmd; |
| 23 | int ret; | 23 | int ret; |
| 24 | 24 | ||
| @@ -57,7 +57,7 @@ static ssize_t bootflag_get(struct device *dev, | |||
| 57 | static ssize_t bootflag_set(struct device *dev, struct device_attribute *attr, | 57 | static ssize_t bootflag_set(struct device *dev, struct device_attribute *attr, |
| 58 | const char *buf, size_t count) | 58 | const char *buf, size_t count) |
| 59 | { | 59 | { |
| 60 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 60 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 61 | struct cmd_ds_mesh_config cmd; | 61 | struct cmd_ds_mesh_config cmd; |
| 62 | uint32_t datum; | 62 | uint32_t datum; |
| 63 | int ret; | 63 | int ret; |
| @@ -100,7 +100,7 @@ static ssize_t boottime_get(struct device *dev, | |||
| 100 | static ssize_t boottime_set(struct device *dev, | 100 | static ssize_t boottime_set(struct device *dev, |
| 101 | struct device_attribute *attr, const char *buf, size_t count) | 101 | struct device_attribute *attr, const char *buf, size_t count) |
| 102 | { | 102 | { |
| 103 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 103 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 104 | struct cmd_ds_mesh_config cmd; | 104 | struct cmd_ds_mesh_config cmd; |
| 105 | uint32_t datum; | 105 | uint32_t datum; |
| 106 | int ret; | 106 | int ret; |
| @@ -152,7 +152,7 @@ static ssize_t channel_get(struct device *dev, | |||
| 152 | static ssize_t channel_set(struct device *dev, struct device_attribute *attr, | 152 | static ssize_t channel_set(struct device *dev, struct device_attribute *attr, |
| 153 | const char *buf, size_t count) | 153 | const char *buf, size_t count) |
| 154 | { | 154 | { |
| 155 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 155 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 156 | struct cmd_ds_mesh_config cmd; | 156 | struct cmd_ds_mesh_config cmd; |
| 157 | uint32_t datum; | 157 | uint32_t datum; |
| 158 | int ret; | 158 | int ret; |
| @@ -210,7 +210,7 @@ static ssize_t mesh_id_set(struct device *dev, struct device_attribute *attr, | |||
| 210 | struct cmd_ds_mesh_config cmd; | 210 | struct cmd_ds_mesh_config cmd; |
| 211 | struct mrvl_mesh_defaults defs; | 211 | struct mrvl_mesh_defaults defs; |
| 212 | struct mrvl_meshie *ie; | 212 | struct mrvl_meshie *ie; |
| 213 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 213 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 214 | int len; | 214 | int len; |
| 215 | int ret; | 215 | int ret; |
| 216 | 216 | ||
| @@ -269,7 +269,7 @@ static ssize_t protocol_id_set(struct device *dev, | |||
| 269 | struct cmd_ds_mesh_config cmd; | 269 | struct cmd_ds_mesh_config cmd; |
| 270 | struct mrvl_mesh_defaults defs; | 270 | struct mrvl_mesh_defaults defs; |
| 271 | struct mrvl_meshie *ie; | 271 | struct mrvl_meshie *ie; |
| 272 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 272 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 273 | uint32_t datum; | 273 | uint32_t datum; |
| 274 | int ret; | 274 | int ret; |
| 275 | 275 | ||
| @@ -323,7 +323,7 @@ static ssize_t metric_id_set(struct device *dev, struct device_attribute *attr, | |||
| 323 | struct cmd_ds_mesh_config cmd; | 323 | struct cmd_ds_mesh_config cmd; |
| 324 | struct mrvl_mesh_defaults defs; | 324 | struct mrvl_mesh_defaults defs; |
| 325 | struct mrvl_meshie *ie; | 325 | struct mrvl_meshie *ie; |
| 326 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 326 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 327 | uint32_t datum; | 327 | uint32_t datum; |
| 328 | int ret; | 328 | int ret; |
| 329 | 329 | ||
| @@ -377,7 +377,7 @@ static ssize_t capability_set(struct device *dev, struct device_attribute *attr, | |||
| 377 | struct cmd_ds_mesh_config cmd; | 377 | struct cmd_ds_mesh_config cmd; |
| 378 | struct mrvl_mesh_defaults defs; | 378 | struct mrvl_mesh_defaults defs; |
| 379 | struct mrvl_meshie *ie; | 379 | struct mrvl_meshie *ie; |
| 380 | struct lbs_private *priv = netdev_priv(to_net_dev(dev)); | 380 | struct lbs_private *priv = to_net_dev(dev)->ml_priv; |
| 381 | uint32_t datum; | 381 | uint32_t datum; |
| 382 | int ret; | 382 | int ret; |
| 383 | 383 | ||
diff --git a/drivers/net/wireless/libertas/scan.c b/drivers/net/wireless/libertas/scan.c index 57f6c12cda20..9014950f4328 100644 --- a/drivers/net/wireless/libertas/scan.c +++ b/drivers/net/wireless/libertas/scan.c | |||
| @@ -945,7 +945,7 @@ int lbs_set_scan(struct net_device *dev, struct iw_request_info *info, | |||
| 945 | union iwreq_data *wrqu, char *extra) | 945 | union iwreq_data *wrqu, char *extra) |
| 946 | { | 946 | { |
| 947 | DECLARE_SSID_BUF(ssid); | 947 | DECLARE_SSID_BUF(ssid); |
| 948 | struct lbs_private *priv = netdev_priv(dev); | 948 | struct lbs_private *priv = dev->ml_priv; |
| 949 | int ret = 0; | 949 | int ret = 0; |
| 950 | 950 | ||
| 951 | lbs_deb_enter(LBS_DEB_WEXT); | 951 | lbs_deb_enter(LBS_DEB_WEXT); |
| @@ -1008,7 +1008,7 @@ int lbs_get_scan(struct net_device *dev, struct iw_request_info *info, | |||
| 1008 | struct iw_point *dwrq, char *extra) | 1008 | struct iw_point *dwrq, char *extra) |
| 1009 | { | 1009 | { |
| 1010 | #define SCAN_ITEM_SIZE 128 | 1010 | #define SCAN_ITEM_SIZE 128 |
| 1011 | struct lbs_private *priv = netdev_priv(dev); | 1011 | struct lbs_private *priv = dev->ml_priv; |
| 1012 | int err = 0; | 1012 | int err = 0; |
| 1013 | char *ev = extra; | 1013 | char *ev = extra; |
| 1014 | char *stop = ev + dwrq->length; | 1014 | char *stop = ev + dwrq->length; |
diff --git a/drivers/net/wireless/libertas/tx.c b/drivers/net/wireless/libertas/tx.c index dac462641170..68bec31ae03b 100644 --- a/drivers/net/wireless/libertas/tx.c +++ b/drivers/net/wireless/libertas/tx.c | |||
| @@ -60,7 +60,7 @@ static u32 convert_radiotap_rate_to_mv(u8 rate) | |||
| 60 | int lbs_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) | 60 | int lbs_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) |
| 61 | { | 61 | { |
| 62 | unsigned long flags; | 62 | unsigned long flags; |
| 63 | struct lbs_private *priv = netdev_priv(dev); | 63 | struct lbs_private *priv = dev->ml_priv; |
| 64 | struct txpd *txpd; | 64 | struct txpd *txpd; |
| 65 | char *p802x_hdr; | 65 | char *p802x_hdr; |
| 66 | uint16_t pkt_len; | 66 | uint16_t pkt_len; |
diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c index c6102e08179e..f16d136ab4bb 100644 --- a/drivers/net/wireless/libertas/wext.c +++ b/drivers/net/wireless/libertas/wext.c | |||
| @@ -163,7 +163,7 @@ static int lbs_get_name(struct net_device *dev, struct iw_request_info *info, | |||
| 163 | static int lbs_get_freq(struct net_device *dev, struct iw_request_info *info, | 163 | static int lbs_get_freq(struct net_device *dev, struct iw_request_info *info, |
| 164 | struct iw_freq *fwrq, char *extra) | 164 | struct iw_freq *fwrq, char *extra) |
| 165 | { | 165 | { |
| 166 | struct lbs_private *priv = netdev_priv(dev); | 166 | struct lbs_private *priv = dev->ml_priv; |
| 167 | struct chan_freq_power *cfp; | 167 | struct chan_freq_power *cfp; |
| 168 | 168 | ||
| 169 | lbs_deb_enter(LBS_DEB_WEXT); | 169 | lbs_deb_enter(LBS_DEB_WEXT); |
| @@ -189,7 +189,7 @@ static int lbs_get_freq(struct net_device *dev, struct iw_request_info *info, | |||
| 189 | static int lbs_get_wap(struct net_device *dev, struct iw_request_info *info, | 189 | static int lbs_get_wap(struct net_device *dev, struct iw_request_info *info, |
| 190 | struct sockaddr *awrq, char *extra) | 190 | struct sockaddr *awrq, char *extra) |
| 191 | { | 191 | { |
| 192 | struct lbs_private *priv = netdev_priv(dev); | 192 | struct lbs_private *priv = dev->ml_priv; |
| 193 | 193 | ||
| 194 | lbs_deb_enter(LBS_DEB_WEXT); | 194 | lbs_deb_enter(LBS_DEB_WEXT); |
| 195 | 195 | ||
| @@ -207,7 +207,7 @@ static int lbs_get_wap(struct net_device *dev, struct iw_request_info *info, | |||
| 207 | static int lbs_set_nick(struct net_device *dev, struct iw_request_info *info, | 207 | static int lbs_set_nick(struct net_device *dev, struct iw_request_info *info, |
| 208 | struct iw_point *dwrq, char *extra) | 208 | struct iw_point *dwrq, char *extra) |
| 209 | { | 209 | { |
| 210 | struct lbs_private *priv = netdev_priv(dev); | 210 | struct lbs_private *priv = dev->ml_priv; |
| 211 | 211 | ||
| 212 | lbs_deb_enter(LBS_DEB_WEXT); | 212 | lbs_deb_enter(LBS_DEB_WEXT); |
| 213 | 213 | ||
| @@ -231,7 +231,7 @@ static int lbs_set_nick(struct net_device *dev, struct iw_request_info *info, | |||
| 231 | static int lbs_get_nick(struct net_device *dev, struct iw_request_info *info, | 231 | static int lbs_get_nick(struct net_device *dev, struct iw_request_info *info, |
| 232 | struct iw_point *dwrq, char *extra) | 232 | struct iw_point *dwrq, char *extra) |
| 233 | { | 233 | { |
| 234 | struct lbs_private *priv = netdev_priv(dev); | 234 | struct lbs_private *priv = dev->ml_priv; |
| 235 | 235 | ||
| 236 | lbs_deb_enter(LBS_DEB_WEXT); | 236 | lbs_deb_enter(LBS_DEB_WEXT); |
| 237 | 237 | ||
| @@ -248,7 +248,7 @@ static int lbs_get_nick(struct net_device *dev, struct iw_request_info *info, | |||
| 248 | static int mesh_get_nick(struct net_device *dev, struct iw_request_info *info, | 248 | static int mesh_get_nick(struct net_device *dev, struct iw_request_info *info, |
| 249 | struct iw_point *dwrq, char *extra) | 249 | struct iw_point *dwrq, char *extra) |
| 250 | { | 250 | { |
| 251 | struct lbs_private *priv = netdev_priv(dev); | 251 | struct lbs_private *priv = dev->ml_priv; |
| 252 | 252 | ||
| 253 | lbs_deb_enter(LBS_DEB_WEXT); | 253 | lbs_deb_enter(LBS_DEB_WEXT); |
| 254 | 254 | ||
| @@ -273,7 +273,7 @@ static int lbs_set_rts(struct net_device *dev, struct iw_request_info *info, | |||
| 273 | struct iw_param *vwrq, char *extra) | 273 | struct iw_param *vwrq, char *extra) |
| 274 | { | 274 | { |
| 275 | int ret = 0; | 275 | int ret = 0; |
| 276 | struct lbs_private *priv = netdev_priv(dev); | 276 | struct lbs_private *priv = dev->ml_priv; |
| 277 | u32 val = vwrq->value; | 277 | u32 val = vwrq->value; |
| 278 | 278 | ||
| 279 | lbs_deb_enter(LBS_DEB_WEXT); | 279 | lbs_deb_enter(LBS_DEB_WEXT); |
| @@ -293,7 +293,7 @@ static int lbs_set_rts(struct net_device *dev, struct iw_request_info *info, | |||
| 293 | static int lbs_get_rts(struct net_device *dev, struct iw_request_info *info, | 293 | static int lbs_get_rts(struct net_device *dev, struct iw_request_info *info, |
| 294 | struct iw_param *vwrq, char *extra) | 294 | struct iw_param *vwrq, char *extra) |
| 295 | { | 295 | { |
| 296 | struct lbs_private *priv = netdev_priv(dev); | 296 | struct lbs_private *priv = dev->ml_priv; |
| 297 | int ret = 0; | 297 | int ret = 0; |
| 298 | u16 val = 0; | 298 | u16 val = 0; |
| 299 | 299 | ||
| @@ -315,7 +315,7 @@ out: | |||
| 315 | static int lbs_set_frag(struct net_device *dev, struct iw_request_info *info, | 315 | static int lbs_set_frag(struct net_device *dev, struct iw_request_info *info, |
| 316 | struct iw_param *vwrq, char *extra) | 316 | struct iw_param *vwrq, char *extra) |
| 317 | { | 317 | { |
| 318 | struct lbs_private *priv = netdev_priv(dev); | 318 | struct lbs_private *priv = dev->ml_priv; |
| 319 | int ret = 0; | 319 | int ret = 0; |
| 320 | u32 val = vwrq->value; | 320 | u32 val = vwrq->value; |
| 321 | 321 | ||
| @@ -336,7 +336,7 @@ static int lbs_set_frag(struct net_device *dev, struct iw_request_info *info, | |||
| 336 | static int lbs_get_frag(struct net_device *dev, struct iw_request_info *info, | 336 | static int lbs_get_frag(struct net_device *dev, struct iw_request_info *info, |
| 337 | struct iw_param *vwrq, char *extra) | 337 | struct iw_param *vwrq, char *extra) |
| 338 | { | 338 | { |
| 339 | struct lbs_private *priv = netdev_priv(dev); | 339 | struct lbs_private *priv = dev->ml_priv; |
| 340 | int ret = 0; | 340 | int ret = 0; |
| 341 | u16 val = 0; | 341 | u16 val = 0; |
| 342 | 342 | ||
| @@ -359,7 +359,7 @@ out: | |||
| 359 | static int lbs_get_mode(struct net_device *dev, | 359 | static int lbs_get_mode(struct net_device *dev, |
| 360 | struct iw_request_info *info, u32 * uwrq, char *extra) | 360 | struct iw_request_info *info, u32 * uwrq, char *extra) |
| 361 | { | 361 | { |
| 362 | struct lbs_private *priv = netdev_priv(dev); | 362 | struct lbs_private *priv = dev->ml_priv; |
| 363 | 363 | ||
| 364 | lbs_deb_enter(LBS_DEB_WEXT); | 364 | lbs_deb_enter(LBS_DEB_WEXT); |
| 365 | 365 | ||
| @@ -385,7 +385,7 @@ static int lbs_get_txpow(struct net_device *dev, | |||
| 385 | struct iw_request_info *info, | 385 | struct iw_request_info *info, |
| 386 | struct iw_param *vwrq, char *extra) | 386 | struct iw_param *vwrq, char *extra) |
| 387 | { | 387 | { |
| 388 | struct lbs_private *priv = netdev_priv(dev); | 388 | struct lbs_private *priv = dev->ml_priv; |
| 389 | s16 curlevel = 0; | 389 | s16 curlevel = 0; |
| 390 | int ret = 0; | 390 | int ret = 0; |
| 391 | 391 | ||
| @@ -418,7 +418,7 @@ out: | |||
| 418 | static int lbs_set_retry(struct net_device *dev, struct iw_request_info *info, | 418 | static int lbs_set_retry(struct net_device *dev, struct iw_request_info *info, |
| 419 | struct iw_param *vwrq, char *extra) | 419 | struct iw_param *vwrq, char *extra) |
| 420 | { | 420 | { |
| 421 | struct lbs_private *priv = netdev_priv(dev); | 421 | struct lbs_private *priv = dev->ml_priv; |
| 422 | int ret = 0; | 422 | int ret = 0; |
| 423 | u16 slimit = 0, llimit = 0; | 423 | u16 slimit = 0, llimit = 0; |
| 424 | 424 | ||
| @@ -466,7 +466,7 @@ out: | |||
| 466 | static int lbs_get_retry(struct net_device *dev, struct iw_request_info *info, | 466 | static int lbs_get_retry(struct net_device *dev, struct iw_request_info *info, |
| 467 | struct iw_param *vwrq, char *extra) | 467 | struct iw_param *vwrq, char *extra) |
| 468 | { | 468 | { |
| 469 | struct lbs_private *priv = netdev_priv(dev); | 469 | struct lbs_private *priv = dev->ml_priv; |
| 470 | int ret = 0; | 470 | int ret = 0; |
| 471 | u16 val = 0; | 471 | u16 val = 0; |
| 472 | 472 | ||
| @@ -542,7 +542,7 @@ static int lbs_get_range(struct net_device *dev, struct iw_request_info *info, | |||
| 542 | struct iw_point *dwrq, char *extra) | 542 | struct iw_point *dwrq, char *extra) |
| 543 | { | 543 | { |
| 544 | int i, j; | 544 | int i, j; |
| 545 | struct lbs_private *priv = netdev_priv(dev); | 545 | struct lbs_private *priv = dev->ml_priv; |
| 546 | struct iw_range *range = (struct iw_range *)extra; | 546 | struct iw_range *range = (struct iw_range *)extra; |
| 547 | struct chan_freq_power *cfp; | 547 | struct chan_freq_power *cfp; |
| 548 | u8 rates[MAX_RATES + 1]; | 548 | u8 rates[MAX_RATES + 1]; |
| @@ -708,7 +708,7 @@ out: | |||
| 708 | static int lbs_set_power(struct net_device *dev, struct iw_request_info *info, | 708 | static int lbs_set_power(struct net_device *dev, struct iw_request_info *info, |
| 709 | struct iw_param *vwrq, char *extra) | 709 | struct iw_param *vwrq, char *extra) |
| 710 | { | 710 | { |
| 711 | struct lbs_private *priv = netdev_priv(dev); | 711 | struct lbs_private *priv = dev->ml_priv; |
| 712 | 712 | ||
| 713 | lbs_deb_enter(LBS_DEB_WEXT); | 713 | lbs_deb_enter(LBS_DEB_WEXT); |
| 714 | 714 | ||
| @@ -758,7 +758,7 @@ static int lbs_set_power(struct net_device *dev, struct iw_request_info *info, | |||
| 758 | static int lbs_get_power(struct net_device *dev, struct iw_request_info *info, | 758 | static int lbs_get_power(struct net_device *dev, struct iw_request_info *info, |
| 759 | struct iw_param *vwrq, char *extra) | 759 | struct iw_param *vwrq, char *extra) |
| 760 | { | 760 | { |
| 761 | struct lbs_private *priv = netdev_priv(dev); | 761 | struct lbs_private *priv = dev->ml_priv; |
| 762 | 762 | ||
| 763 | lbs_deb_enter(LBS_DEB_WEXT); | 763 | lbs_deb_enter(LBS_DEB_WEXT); |
| 764 | 764 | ||
| @@ -781,7 +781,7 @@ static struct iw_statistics *lbs_get_wireless_stats(struct net_device *dev) | |||
| 781 | EXCELLENT = 95, | 781 | EXCELLENT = 95, |
| 782 | PERFECT = 100 | 782 | PERFECT = 100 |
| 783 | }; | 783 | }; |
| 784 | struct lbs_private *priv = netdev_priv(dev); | 784 | struct lbs_private *priv = dev->ml_priv; |
| 785 | u32 rssi_qual; | 785 | u32 rssi_qual; |
| 786 | u32 tx_qual; | 786 | u32 tx_qual; |
| 787 | u32 quality = 0; | 787 | u32 quality = 0; |
| @@ -886,7 +886,7 @@ static int lbs_set_freq(struct net_device *dev, struct iw_request_info *info, | |||
| 886 | struct iw_freq *fwrq, char *extra) | 886 | struct iw_freq *fwrq, char *extra) |
| 887 | { | 887 | { |
| 888 | int ret = -EINVAL; | 888 | int ret = -EINVAL; |
| 889 | struct lbs_private *priv = netdev_priv(dev); | 889 | struct lbs_private *priv = dev->ml_priv; |
| 890 | struct chan_freq_power *cfp; | 890 | struct chan_freq_power *cfp; |
| 891 | struct assoc_request * assoc_req; | 891 | struct assoc_request * assoc_req; |
| 892 | 892 | ||
| @@ -943,7 +943,7 @@ static int lbs_mesh_set_freq(struct net_device *dev, | |||
| 943 | struct iw_request_info *info, | 943 | struct iw_request_info *info, |
| 944 | struct iw_freq *fwrq, char *extra) | 944 | struct iw_freq *fwrq, char *extra) |
| 945 | { | 945 | { |
| 946 | struct lbs_private *priv = netdev_priv(dev); | 946 | struct lbs_private *priv = dev->ml_priv; |
| 947 | struct chan_freq_power *cfp; | 947 | struct chan_freq_power *cfp; |
| 948 | int ret = -EINVAL; | 948 | int ret = -EINVAL; |
| 949 | 949 | ||
| @@ -994,7 +994,7 @@ out: | |||
| 994 | static int lbs_set_rate(struct net_device *dev, struct iw_request_info *info, | 994 | static int lbs_set_rate(struct net_device *dev, struct iw_request_info *info, |
| 995 | struct iw_param *vwrq, char *extra) | 995 | struct iw_param *vwrq, char *extra) |
| 996 | { | 996 | { |
| 997 | struct lbs_private *priv = netdev_priv(dev); | 997 | struct lbs_private *priv = dev->ml_priv; |
| 998 | u8 new_rate = 0; | 998 | u8 new_rate = 0; |
| 999 | int ret = -EINVAL; | 999 | int ret = -EINVAL; |
| 1000 | u8 rates[MAX_RATES + 1]; | 1000 | u8 rates[MAX_RATES + 1]; |
| @@ -1054,7 +1054,7 @@ out: | |||
| 1054 | static int lbs_get_rate(struct net_device *dev, struct iw_request_info *info, | 1054 | static int lbs_get_rate(struct net_device *dev, struct iw_request_info *info, |
| 1055 | struct iw_param *vwrq, char *extra) | 1055 | struct iw_param *vwrq, char *extra) |
| 1056 | { | 1056 | { |
| 1057 | struct lbs_private *priv = netdev_priv(dev); | 1057 | struct lbs_private *priv = dev->ml_priv; |
| 1058 | 1058 | ||
| 1059 | lbs_deb_enter(LBS_DEB_WEXT); | 1059 | lbs_deb_enter(LBS_DEB_WEXT); |
| 1060 | 1060 | ||
| @@ -1079,7 +1079,7 @@ static int lbs_set_mode(struct net_device *dev, | |||
| 1079 | struct iw_request_info *info, u32 * uwrq, char *extra) | 1079 | struct iw_request_info *info, u32 * uwrq, char *extra) |
| 1080 | { | 1080 | { |
| 1081 | int ret = 0; | 1081 | int ret = 0; |
| 1082 | struct lbs_private *priv = netdev_priv(dev); | 1082 | struct lbs_private *priv = dev->ml_priv; |
| 1083 | struct assoc_request * assoc_req; | 1083 | struct assoc_request * assoc_req; |
| 1084 | 1084 | ||
| 1085 | lbs_deb_enter(LBS_DEB_WEXT); | 1085 | lbs_deb_enter(LBS_DEB_WEXT); |
| @@ -1124,7 +1124,7 @@ static int lbs_get_encode(struct net_device *dev, | |||
| 1124 | struct iw_request_info *info, | 1124 | struct iw_request_info *info, |
| 1125 | struct iw_point *dwrq, u8 * extra) | 1125 | struct iw_point *dwrq, u8 * extra) |
| 1126 | { | 1126 | { |
| 1127 | struct lbs_private *priv = netdev_priv(dev); | 1127 | struct lbs_private *priv = dev->ml_priv; |
| 1128 | int index = (dwrq->flags & IW_ENCODE_INDEX) - 1; | 1128 | int index = (dwrq->flags & IW_ENCODE_INDEX) - 1; |
| 1129 | 1129 | ||
| 1130 | lbs_deb_enter(LBS_DEB_WEXT); | 1130 | lbs_deb_enter(LBS_DEB_WEXT); |
| @@ -1319,7 +1319,7 @@ static int lbs_set_encode(struct net_device *dev, | |||
| 1319 | struct iw_point *dwrq, char *extra) | 1319 | struct iw_point *dwrq, char *extra) |
| 1320 | { | 1320 | { |
| 1321 | int ret = 0; | 1321 | int ret = 0; |
| 1322 | struct lbs_private *priv = netdev_priv(dev); | 1322 | struct lbs_private *priv = dev->ml_priv; |
| 1323 | struct assoc_request * assoc_req; | 1323 | struct assoc_request * assoc_req; |
| 1324 | u16 is_default = 0, index = 0, set_tx_key = 0; | 1324 | u16 is_default = 0, index = 0, set_tx_key = 0; |
| 1325 | 1325 | ||
| @@ -1395,7 +1395,7 @@ static int lbs_get_encodeext(struct net_device *dev, | |||
| 1395 | char *extra) | 1395 | char *extra) |
| 1396 | { | 1396 | { |
| 1397 | int ret = -EINVAL; | 1397 | int ret = -EINVAL; |
| 1398 | struct lbs_private *priv = netdev_priv(dev); | 1398 | struct lbs_private *priv = dev->ml_priv; |
| 1399 | struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; | 1399 | struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; |
| 1400 | int index, max_key_len; | 1400 | int index, max_key_len; |
| 1401 | 1401 | ||
| @@ -1501,7 +1501,7 @@ static int lbs_set_encodeext(struct net_device *dev, | |||
| 1501 | char *extra) | 1501 | char *extra) |
| 1502 | { | 1502 | { |
| 1503 | int ret = 0; | 1503 | int ret = 0; |
| 1504 | struct lbs_private *priv = netdev_priv(dev); | 1504 | struct lbs_private *priv = dev->ml_priv; |
| 1505 | struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; | 1505 | struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; |
| 1506 | int alg = ext->alg; | 1506 | int alg = ext->alg; |
| 1507 | struct assoc_request * assoc_req; | 1507 | struct assoc_request * assoc_req; |
| @@ -1639,7 +1639,7 @@ static int lbs_set_genie(struct net_device *dev, | |||
| 1639 | struct iw_point *dwrq, | 1639 | struct iw_point *dwrq, |
| 1640 | char *extra) | 1640 | char *extra) |
| 1641 | { | 1641 | { |
| 1642 | struct lbs_private *priv = netdev_priv(dev); | 1642 | struct lbs_private *priv = dev->ml_priv; |
| 1643 | int ret = 0; | 1643 | int ret = 0; |
| 1644 | struct assoc_request * assoc_req; | 1644 | struct assoc_request * assoc_req; |
| 1645 | 1645 | ||
| @@ -1685,7 +1685,7 @@ static int lbs_get_genie(struct net_device *dev, | |||
| 1685 | char *extra) | 1685 | char *extra) |
| 1686 | { | 1686 | { |
| 1687 | int ret = 0; | 1687 | int ret = 0; |
| 1688 | struct lbs_private *priv = netdev_priv(dev); | 1688 | struct lbs_private *priv = dev->ml_priv; |
| 1689 | 1689 | ||
| 1690 | lbs_deb_enter(LBS_DEB_WEXT); | 1690 | lbs_deb_enter(LBS_DEB_WEXT); |
| 1691 | 1691 | ||
| @@ -1713,7 +1713,7 @@ static int lbs_set_auth(struct net_device *dev, | |||
| 1713 | struct iw_param *dwrq, | 1713 | struct iw_param *dwrq, |
| 1714 | char *extra) | 1714 | char *extra) |
| 1715 | { | 1715 | { |
| 1716 | struct lbs_private *priv = netdev_priv(dev); | 1716 | struct lbs_private *priv = dev->ml_priv; |
| 1717 | struct assoc_request * assoc_req; | 1717 | struct assoc_request * assoc_req; |
| 1718 | int ret = 0; | 1718 | int ret = 0; |
| 1719 | int updated = 0; | 1719 | int updated = 0; |
| @@ -1816,7 +1816,7 @@ static int lbs_get_auth(struct net_device *dev, | |||
| 1816 | char *extra) | 1816 | char *extra) |
| 1817 | { | 1817 | { |
| 1818 | int ret = 0; | 1818 | int ret = 0; |
| 1819 | struct lbs_private *priv = netdev_priv(dev); | 1819 | struct lbs_private *priv = dev->ml_priv; |
| 1820 | 1820 | ||
| 1821 | lbs_deb_enter(LBS_DEB_WEXT); | 1821 | lbs_deb_enter(LBS_DEB_WEXT); |
| 1822 | 1822 | ||
| @@ -1857,7 +1857,7 @@ static int lbs_set_txpow(struct net_device *dev, struct iw_request_info *info, | |||
| 1857 | struct iw_param *vwrq, char *extra) | 1857 | struct iw_param *vwrq, char *extra) |
| 1858 | { | 1858 | { |
| 1859 | int ret = 0; | 1859 | int ret = 0; |
| 1860 | struct lbs_private *priv = netdev_priv(dev); | 1860 | struct lbs_private *priv = dev->ml_priv; |
| 1861 | s16 dbm = (s16) vwrq->value; | 1861 | s16 dbm = (s16) vwrq->value; |
| 1862 | 1862 | ||
| 1863 | lbs_deb_enter(LBS_DEB_WEXT); | 1863 | lbs_deb_enter(LBS_DEB_WEXT); |
| @@ -1936,7 +1936,7 @@ out: | |||
| 1936 | static int lbs_get_essid(struct net_device *dev, struct iw_request_info *info, | 1936 | static int lbs_get_essid(struct net_device *dev, struct iw_request_info *info, |
| 1937 | struct iw_point *dwrq, char *extra) | 1937 | struct iw_point *dwrq, char *extra) |
| 1938 | { | 1938 | { |
| 1939 | struct lbs_private *priv = netdev_priv(dev); | 1939 | struct lbs_private *priv = dev->ml_priv; |
| 1940 | 1940 | ||
| 1941 | lbs_deb_enter(LBS_DEB_WEXT); | 1941 | lbs_deb_enter(LBS_DEB_WEXT); |
| 1942 | 1942 | ||
| @@ -1971,7 +1971,7 @@ static int lbs_get_essid(struct net_device *dev, struct iw_request_info *info, | |||
| 1971 | static int lbs_set_essid(struct net_device *dev, struct iw_request_info *info, | 1971 | static int lbs_set_essid(struct net_device *dev, struct iw_request_info *info, |
| 1972 | struct iw_point *dwrq, char *extra) | 1972 | struct iw_point *dwrq, char *extra) |
| 1973 | { | 1973 | { |
| 1974 | struct lbs_private *priv = netdev_priv(dev); | 1974 | struct lbs_private *priv = dev->ml_priv; |
| 1975 | int ret = 0; | 1975 | int ret = 0; |
| 1976 | u8 ssid[IW_ESSID_MAX_SIZE]; | 1976 | u8 ssid[IW_ESSID_MAX_SIZE]; |
| 1977 | u8 ssid_len = 0; | 1977 | u8 ssid_len = 0; |
| @@ -2040,7 +2040,7 @@ static int lbs_mesh_get_essid(struct net_device *dev, | |||
| 2040 | struct iw_request_info *info, | 2040 | struct iw_request_info *info, |
| 2041 | struct iw_point *dwrq, char *extra) | 2041 | struct iw_point *dwrq, char *extra) |
| 2042 | { | 2042 | { |
| 2043 | struct lbs_private *priv = netdev_priv(dev); | 2043 | struct lbs_private *priv = dev->ml_priv; |
| 2044 | 2044 | ||
| 2045 | lbs_deb_enter(LBS_DEB_WEXT); | 2045 | lbs_deb_enter(LBS_DEB_WEXT); |
| 2046 | 2046 | ||
| @@ -2058,7 +2058,7 @@ static int lbs_mesh_set_essid(struct net_device *dev, | |||
| 2058 | struct iw_request_info *info, | 2058 | struct iw_request_info *info, |
| 2059 | struct iw_point *dwrq, char *extra) | 2059 | struct iw_point *dwrq, char *extra) |
| 2060 | { | 2060 | { |
| 2061 | struct lbs_private *priv = netdev_priv(dev); | 2061 | struct lbs_private *priv = dev->ml_priv; |
| 2062 | int ret = 0; | 2062 | int ret = 0; |
| 2063 | 2063 | ||
| 2064 | lbs_deb_enter(LBS_DEB_WEXT); | 2064 | lbs_deb_enter(LBS_DEB_WEXT); |
| @@ -2102,7 +2102,7 @@ static int lbs_mesh_set_essid(struct net_device *dev, | |||
| 2102 | static int lbs_set_wap(struct net_device *dev, struct iw_request_info *info, | 2102 | static int lbs_set_wap(struct net_device *dev, struct iw_request_info *info, |
| 2103 | struct sockaddr *awrq, char *extra) | 2103 | struct sockaddr *awrq, char *extra) |
| 2104 | { | 2104 | { |
| 2105 | struct lbs_private *priv = netdev_priv(dev); | 2105 | struct lbs_private *priv = dev->ml_priv; |
| 2106 | struct assoc_request * assoc_req; | 2106 | struct assoc_request * assoc_req; |
| 2107 | int ret = 0; | 2107 | int ret = 0; |
| 2108 | 2108 | ||
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/p54/p54common.c b/drivers/net/wireless/p54/p54common.c index 34561e6e816b..f170106bf0ae 100644 --- a/drivers/net/wireless/p54/p54common.c +++ b/drivers/net/wireless/p54/p54common.c | |||
| @@ -710,10 +710,11 @@ static struct sk_buff *p54_find_tx_entry(struct ieee80211_hw *dev, | |||
| 710 | __le32 req_id) | 710 | __le32 req_id) |
| 711 | { | 711 | { |
| 712 | struct p54_common *priv = dev->priv; | 712 | struct p54_common *priv = dev->priv; |
| 713 | struct sk_buff *entry = priv->tx_queue.next; | 713 | struct sk_buff *entry; |
| 714 | unsigned long flags; | 714 | unsigned long flags; |
| 715 | 715 | ||
| 716 | spin_lock_irqsave(&priv->tx_queue.lock, flags); | 716 | spin_lock_irqsave(&priv->tx_queue.lock, flags); |
| 717 | entry = priv->tx_queue.next; | ||
| 717 | while (entry != (struct sk_buff *)&priv->tx_queue) { | 718 | while (entry != (struct sk_buff *)&priv->tx_queue) { |
| 718 | struct p54_hdr *hdr = (struct p54_hdr *) entry->data; | 719 | struct p54_hdr *hdr = (struct p54_hdr *) entry->data; |
| 719 | 720 | ||
| @@ -732,7 +733,7 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
| 732 | struct p54_common *priv = dev->priv; | 733 | struct p54_common *priv = dev->priv; |
| 733 | struct p54_hdr *hdr = (struct p54_hdr *) skb->data; | 734 | struct p54_hdr *hdr = (struct p54_hdr *) skb->data; |
| 734 | struct p54_frame_sent *payload = (struct p54_frame_sent *) hdr->data; | 735 | struct p54_frame_sent *payload = (struct p54_frame_sent *) hdr->data; |
| 735 | struct sk_buff *entry = (struct sk_buff *) priv->tx_queue.next; | 736 | struct sk_buff *entry; |
| 736 | u32 addr = le32_to_cpu(hdr->req_id) - priv->headroom; | 737 | u32 addr = le32_to_cpu(hdr->req_id) - priv->headroom; |
| 737 | struct memrecord *range = NULL; | 738 | struct memrecord *range = NULL; |
| 738 | u32 freed = 0; | 739 | u32 freed = 0; |
| @@ -741,6 +742,7 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
| 741 | int count, idx; | 742 | int count, idx; |
| 742 | 743 | ||
| 743 | spin_lock_irqsave(&priv->tx_queue.lock, flags); | 744 | spin_lock_irqsave(&priv->tx_queue.lock, flags); |
| 745 | entry = (struct sk_buff *) priv->tx_queue.next; | ||
| 744 | while (entry != (struct sk_buff *)&priv->tx_queue) { | 746 | while (entry != (struct sk_buff *)&priv->tx_queue) { |
| 745 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(entry); | 747 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(entry); |
| 746 | struct p54_hdr *entry_hdr; | 748 | struct p54_hdr *entry_hdr; |
| @@ -976,7 +978,7 @@ static int p54_assign_address(struct ieee80211_hw *dev, struct sk_buff *skb, | |||
| 976 | struct p54_hdr *data, u32 len) | 978 | struct p54_hdr *data, u32 len) |
| 977 | { | 979 | { |
| 978 | struct p54_common *priv = dev->priv; | 980 | struct p54_common *priv = dev->priv; |
| 979 | struct sk_buff *entry = priv->tx_queue.next; | 981 | struct sk_buff *entry; |
| 980 | struct sk_buff *target_skb = NULL; | 982 | struct sk_buff *target_skb = NULL; |
| 981 | struct ieee80211_tx_info *info; | 983 | struct ieee80211_tx_info *info; |
| 982 | struct memrecord *range; | 984 | struct memrecord *range; |
| @@ -1014,6 +1016,7 @@ static int p54_assign_address(struct ieee80211_hw *dev, struct sk_buff *skb, | |||
| 1014 | } | 1016 | } |
| 1015 | } | 1017 | } |
| 1016 | 1018 | ||
| 1019 | entry = priv->tx_queue.next; | ||
| 1017 | while (left--) { | 1020 | while (left--) { |
| 1018 | u32 hole_size; | 1021 | u32 hole_size; |
| 1019 | info = IEEE80211_SKB_CB(entry); | 1022 | info = IEEE80211_SKB_CB(entry); |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index af6b5847be5c..3e2ac2bbb12f 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
| @@ -1952,6 +1952,8 @@ static struct usb_device_id rt2500usb_device_table[] = { | |||
| 1952 | { USB_DEVICE(0x13b1, 0x000d), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1952 | { USB_DEVICE(0x13b1, 0x000d), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1953 | { USB_DEVICE(0x13b1, 0x0011), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1953 | { USB_DEVICE(0x13b1, 0x0011), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1954 | { USB_DEVICE(0x13b1, 0x001a), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1954 | { USB_DEVICE(0x13b1, 0x001a), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1955 | /* CNet */ | ||
| 1956 | { USB_DEVICE(0x1371, 0x9022), USB_DEVICE_DATA(&rt2500usb_ops) }, | ||
| 1955 | /* Conceptronic */ | 1957 | /* Conceptronic */ |
| 1956 | { USB_DEVICE(0x14b2, 0x3c02), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1958 | { USB_DEVICE(0x14b2, 0x3c02), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1957 | /* D-LINK */ | 1959 | /* D-LINK */ |
| @@ -1976,14 +1978,20 @@ static struct usb_device_id rt2500usb_device_table[] = { | |||
| 1976 | { USB_DEVICE(0x148f, 0x2570), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1978 | { USB_DEVICE(0x148f, 0x2570), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1977 | { USB_DEVICE(0x148f, 0x2573), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1979 | { USB_DEVICE(0x148f, 0x2573), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1978 | { USB_DEVICE(0x148f, 0x9020), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1980 | { USB_DEVICE(0x148f, 0x9020), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1981 | /* Sagem */ | ||
| 1982 | { USB_DEVICE(0x079b, 0x004b), USB_DEVICE_DATA(&rt2500usb_ops) }, | ||
| 1979 | /* Siemens */ | 1983 | /* Siemens */ |
| 1980 | { USB_DEVICE(0x0681, 0x3c06), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1984 | { USB_DEVICE(0x0681, 0x3c06), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1981 | /* SMC */ | 1985 | /* SMC */ |
| 1982 | { USB_DEVICE(0x0707, 0xee13), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1986 | { USB_DEVICE(0x0707, 0xee13), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1983 | /* Spairon */ | 1987 | /* Spairon */ |
| 1984 | { USB_DEVICE(0x114b, 0x0110), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1988 | { USB_DEVICE(0x114b, 0x0110), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1989 | /* SURECOM */ | ||
| 1990 | { USB_DEVICE(0x0769, 0x11f3), USB_DEVICE_DATA(&rt2500usb_ops) }, | ||
| 1985 | /* Trust */ | 1991 | /* Trust */ |
| 1986 | { USB_DEVICE(0x0eb0, 0x9020), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1992 | { USB_DEVICE(0x0eb0, 0x9020), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1993 | /* VTech */ | ||
| 1994 | { USB_DEVICE(0x0f88, 0x3012), USB_DEVICE_DATA(&rt2500usb_ops) }, | ||
| 1987 | /* Zinwell */ | 1995 | /* Zinwell */ |
| 1988 | { USB_DEVICE(0x5a57, 0x0260), USB_DEVICE_DATA(&rt2500usb_ops) }, | 1996 | { USB_DEVICE(0x5a57, 0x0260), USB_DEVICE_DATA(&rt2500usb_ops) }, |
| 1989 | { 0, } | 1997 | { 0, } |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index 96a8d69f8790..cefee1b26cd8 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
| @@ -2281,7 +2281,18 @@ static const struct rt2x00_ops rt73usb_ops = { | |||
| 2281 | */ | 2281 | */ |
| 2282 | static struct usb_device_id rt73usb_device_table[] = { | 2282 | static struct usb_device_id rt73usb_device_table[] = { |
| 2283 | /* AboCom */ | 2283 | /* AboCom */ |
| 2284 | { USB_DEVICE(0x07b8, 0xb21b), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2285 | { USB_DEVICE(0x07b8, 0xb21c), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2284 | { USB_DEVICE(0x07b8, 0xb21d), USB_DEVICE_DATA(&rt73usb_ops) }, | 2286 | { USB_DEVICE(0x07b8, 0xb21d), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2287 | { USB_DEVICE(0x07b8, 0xb21e), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2288 | { USB_DEVICE(0x07b8, 0xb21f), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2289 | /* AL */ | ||
| 2290 | { USB_DEVICE(0x14b2, 0x3c10), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2291 | /* Amigo */ | ||
| 2292 | { USB_DEVICE(0x148f, 0x9021), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2293 | { USB_DEVICE(0x0eb0, 0x9021), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2294 | /* AMIT */ | ||
| 2295 | { USB_DEVICE(0x18c5, 0x0002), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2285 | /* Askey */ | 2296 | /* Askey */ |
| 2286 | { USB_DEVICE(0x1690, 0x0722), USB_DEVICE_DATA(&rt73usb_ops) }, | 2297 | { USB_DEVICE(0x1690, 0x0722), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2287 | /* ASUS */ | 2298 | /* ASUS */ |
| @@ -2294,7 +2305,9 @@ static struct usb_device_id rt73usb_device_table[] = { | |||
| 2294 | { USB_DEVICE(0x050d, 0x905c), USB_DEVICE_DATA(&rt73usb_ops) }, | 2305 | { USB_DEVICE(0x050d, 0x905c), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2295 | /* Billionton */ | 2306 | /* Billionton */ |
| 2296 | { USB_DEVICE(0x1631, 0xc019), USB_DEVICE_DATA(&rt73usb_ops) }, | 2307 | { USB_DEVICE(0x1631, 0xc019), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2308 | { USB_DEVICE(0x08dd, 0x0120), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2297 | /* Buffalo */ | 2309 | /* Buffalo */ |
| 2310 | { USB_DEVICE(0x0411, 0x00d8), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2298 | { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) }, | 2311 | { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2299 | /* CNet */ | 2312 | /* CNet */ |
| 2300 | { USB_DEVICE(0x1371, 0x9022), USB_DEVICE_DATA(&rt73usb_ops) }, | 2313 | { USB_DEVICE(0x1371, 0x9022), USB_DEVICE_DATA(&rt73usb_ops) }, |
| @@ -2308,6 +2321,11 @@ static struct usb_device_id rt73usb_device_table[] = { | |||
| 2308 | { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) }, | 2321 | { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2309 | { USB_DEVICE(0x07d1, 0x3c06), USB_DEVICE_DATA(&rt73usb_ops) }, | 2322 | { USB_DEVICE(0x07d1, 0x3c06), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2310 | { USB_DEVICE(0x07d1, 0x3c07), USB_DEVICE_DATA(&rt73usb_ops) }, | 2323 | { USB_DEVICE(0x07d1, 0x3c07), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2324 | /* Edimax */ | ||
| 2325 | { USB_DEVICE(0x7392, 0x7318), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2326 | { USB_DEVICE(0x7392, 0x7618), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2327 | /* EnGenius */ | ||
| 2328 | { USB_DEVICE(0x1740, 0x3701), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2311 | /* Gemtek */ | 2329 | /* Gemtek */ |
| 2312 | { USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) }, | 2330 | { USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2313 | /* Gigabyte */ | 2331 | /* Gigabyte */ |
| @@ -2328,22 +2346,34 @@ static struct usb_device_id rt73usb_device_table[] = { | |||
| 2328 | { USB_DEVICE(0x0db0, 0xa861), USB_DEVICE_DATA(&rt73usb_ops) }, | 2346 | { USB_DEVICE(0x0db0, 0xa861), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2329 | { USB_DEVICE(0x0db0, 0xa874), USB_DEVICE_DATA(&rt73usb_ops) }, | 2347 | { USB_DEVICE(0x0db0, 0xa874), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2330 | /* Ralink */ | 2348 | /* Ralink */ |
| 2349 | { USB_DEVICE(0x04bb, 0x093d), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2331 | { USB_DEVICE(0x148f, 0x2573), USB_DEVICE_DATA(&rt73usb_ops) }, | 2350 | { USB_DEVICE(0x148f, 0x2573), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2332 | { USB_DEVICE(0x148f, 0x2671), USB_DEVICE_DATA(&rt73usb_ops) }, | 2351 | { USB_DEVICE(0x148f, 0x2671), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2333 | /* Qcom */ | 2352 | /* Qcom */ |
| 2334 | { USB_DEVICE(0x18e8, 0x6196), USB_DEVICE_DATA(&rt73usb_ops) }, | 2353 | { USB_DEVICE(0x18e8, 0x6196), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2335 | { USB_DEVICE(0x18e8, 0x6229), USB_DEVICE_DATA(&rt73usb_ops) }, | 2354 | { USB_DEVICE(0x18e8, 0x6229), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2336 | { USB_DEVICE(0x18e8, 0x6238), USB_DEVICE_DATA(&rt73usb_ops) }, | 2355 | { USB_DEVICE(0x18e8, 0x6238), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2356 | /* Samsung */ | ||
| 2357 | { USB_DEVICE(0x04e8, 0x4471), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2337 | /* Senao */ | 2358 | /* Senao */ |
| 2338 | { USB_DEVICE(0x1740, 0x7100), USB_DEVICE_DATA(&rt73usb_ops) }, | 2359 | { USB_DEVICE(0x1740, 0x7100), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2339 | /* Sitecom */ | 2360 | /* Sitecom */ |
| 2340 | { USB_DEVICE(0x0df6, 0x9712), USB_DEVICE_DATA(&rt73usb_ops) }, | 2361 | { USB_DEVICE(0x0df6, 0x0024), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2362 | { USB_DEVICE(0x0df6, 0x0027), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2363 | { USB_DEVICE(0x0df6, 0x002f), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2341 | { USB_DEVICE(0x0df6, 0x90ac), USB_DEVICE_DATA(&rt73usb_ops) }, | 2364 | { USB_DEVICE(0x0df6, 0x90ac), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2365 | { USB_DEVICE(0x0df6, 0x9712), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2342 | /* Surecom */ | 2366 | /* Surecom */ |
| 2343 | { USB_DEVICE(0x0769, 0x31f3), USB_DEVICE_DATA(&rt73usb_ops) }, | 2367 | { USB_DEVICE(0x0769, 0x31f3), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2368 | /* Philips */ | ||
| 2369 | { USB_DEVICE(0x0471, 0x200a), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2344 | /* Planex */ | 2370 | /* Planex */ |
| 2345 | { USB_DEVICE(0x2019, 0xab01), USB_DEVICE_DATA(&rt73usb_ops) }, | 2371 | { USB_DEVICE(0x2019, 0xab01), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2346 | { USB_DEVICE(0x2019, 0xab50), USB_DEVICE_DATA(&rt73usb_ops) }, | 2372 | { USB_DEVICE(0x2019, 0xab50), USB_DEVICE_DATA(&rt73usb_ops) }, |
| 2373 | /* Zcom */ | ||
| 2374 | { USB_DEVICE(0x0cde, 0x001c), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2375 | /* ZyXEL */ | ||
| 2376 | { USB_DEVICE(0x0586, 0x3415), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
| 2347 | { 0, } | 2377 | { 0, } |
| 2348 | }; | 2378 | }; |
| 2349 | 2379 | ||
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 | ||
diff --git a/drivers/net/wireless/zd1211rw/zd_rf.c b/drivers/net/wireless/zd1211rw/zd_rf.c index 7207bfd2e6cd..c875ee05e22e 100644 --- a/drivers/net/wireless/zd1211rw/zd_rf.c +++ b/drivers/net/wireless/zd1211rw/zd_rf.c | |||
| @@ -86,6 +86,7 @@ int zd_rf_init_hw(struct zd_rf *rf, u8 type) | |||
| 86 | case AL7230B_RF: | 86 | case AL7230B_RF: |
| 87 | r = zd_rf_init_al7230b(rf); | 87 | r = zd_rf_init_al7230b(rf); |
| 88 | break; | 88 | break; |
| 89 | case MAXIM_NEW_RF: | ||
| 89 | case UW2453_RF: | 90 | case UW2453_RF: |
| 90 | r = zd_rf_init_uw2453(rf); | 91 | r = zd_rf_init_uw2453(rf); |
| 91 | break; | 92 | break; |
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c index 17527f765b39..f0e5e943f6e3 100644 --- a/drivers/net/wireless/zd1211rw/zd_usb.c +++ b/drivers/net/wireless/zd1211rw/zd_usb.c | |||
| @@ -37,6 +37,7 @@ | |||
| 37 | static struct usb_device_id usb_ids[] = { | 37 | static struct usb_device_id usb_ids[] = { |
| 38 | /* ZD1211 */ | 38 | /* ZD1211 */ |
| 39 | { USB_DEVICE(0x0ace, 0x1211), .driver_info = DEVICE_ZD1211 }, | 39 | { USB_DEVICE(0x0ace, 0x1211), .driver_info = DEVICE_ZD1211 }, |
| 40 | { USB_DEVICE(0x0ace, 0xa211), .driver_info = DEVICE_ZD1211 }, | ||
| 40 | { USB_DEVICE(0x07b8, 0x6001), .driver_info = DEVICE_ZD1211 }, | 41 | { USB_DEVICE(0x07b8, 0x6001), .driver_info = DEVICE_ZD1211 }, |
| 41 | { USB_DEVICE(0x126f, 0xa006), .driver_info = DEVICE_ZD1211 }, | 42 | { USB_DEVICE(0x126f, 0xa006), .driver_info = DEVICE_ZD1211 }, |
| 42 | { USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 }, | 43 | { USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 }, |
