diff options
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/ath/ar9170/usb.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 12 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/cfg.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/dev.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/mwl8k.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/p54/p54usb.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800lib.c | 4 |
10 files changed, 33 insertions, 13 deletions
diff --git a/drivers/net/wireless/ath/ar9170/usb.c b/drivers/net/wireless/ath/ar9170/usb.c index 4e30197afff6..6b1cb706e410 100644 --- a/drivers/net/wireless/ath/ar9170/usb.c +++ b/drivers/net/wireless/ath/ar9170/usb.c | |||
@@ -94,6 +94,8 @@ static struct usb_device_id ar9170_usb_ids[] = { | |||
94 | { USB_DEVICE(0x04bb, 0x093f) }, | 94 | { USB_DEVICE(0x04bb, 0x093f) }, |
95 | /* AVM FRITZ!WLAN USB Stick N */ | 95 | /* AVM FRITZ!WLAN USB Stick N */ |
96 | { USB_DEVICE(0x057C, 0x8401) }, | 96 | { USB_DEVICE(0x057C, 0x8401) }, |
97 | /* NEC WL300NU-G */ | ||
98 | { USB_DEVICE(0x0409, 0x0249) }, | ||
97 | /* AVM FRITZ!WLAN USB Stick N 2.4 */ | 99 | /* AVM FRITZ!WLAN USB Stick N 2.4 */ |
98 | { USB_DEVICE(0x057C, 0x8402), .driver_info = AR9170_REQ_FW1_ONLY }, | 100 | { USB_DEVICE(0x057C, 0x8402), .driver_info = AR9170_REQ_FW1_ONLY }, |
99 | 101 | ||
@@ -416,7 +418,7 @@ static int ar9170_usb_exec_cmd(struct ar9170 *ar, enum ar9170_cmd cmd, | |||
416 | spin_unlock_irqrestore(&aru->common.cmdlock, flags); | 418 | spin_unlock_irqrestore(&aru->common.cmdlock, flags); |
417 | 419 | ||
418 | usb_fill_int_urb(urb, aru->udev, | 420 | usb_fill_int_urb(urb, aru->udev, |
419 | usb_sndbulkpipe(aru->udev, AR9170_EP_CMD), | 421 | usb_sndintpipe(aru->udev, AR9170_EP_CMD), |
420 | aru->common.cmdbuf, plen + 4, | 422 | aru->common.cmdbuf, plen + 4, |
421 | ar9170_usb_tx_urb_complete, NULL, 1); | 423 | ar9170_usb_tx_urb_complete, NULL, 1); |
422 | 424 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index 3949133d9ee2..3297fc7b80bf 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -2047,16 +2047,14 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv, | |||
2047 | tx_resp->failure_frame); | 2047 | tx_resp->failure_frame); |
2048 | 2048 | ||
2049 | freed = iwl_tx_queue_reclaim(priv, txq_id, index); | 2049 | freed = iwl_tx_queue_reclaim(priv, txq_id, index); |
2050 | if (qc && likely(sta_id != IWL_INVALID_STATION)) | 2050 | iwl_free_tfds_in_queue(priv, sta_id, tid, freed); |
2051 | priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; | ||
2052 | 2051 | ||
2053 | if (priv->mac80211_registered && | 2052 | if (priv->mac80211_registered && |
2054 | (iwl_queue_space(&txq->q) > txq->q.low_mark)) | 2053 | (iwl_queue_space(&txq->q) > txq->q.low_mark)) |
2055 | iwl_wake_queue(priv, txq_id); | 2054 | iwl_wake_queue(priv, txq_id); |
2056 | } | 2055 | } |
2057 | 2056 | ||
2058 | if (qc && likely(sta_id != IWL_INVALID_STATION)) | 2057 | iwl_txq_check_empty(priv, sta_id, tid, txq_id); |
2059 | iwl_txq_check_empty(priv, sta_id, tid, txq_id); | ||
2060 | 2058 | ||
2061 | if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK)) | 2059 | if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK)) |
2062 | IWL_ERR(priv, "TODO: Implement Tx ABORT REQUIRED!!!\n"); | 2060 | IWL_ERR(priv, "TODO: Implement Tx ABORT REQUIRED!!!\n"); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 0a376f720d78..f43a45d0f1dd 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -1236,7 +1236,15 @@ static void iwl_irq_tasklet(struct iwl_priv *priv) | |||
1236 | /* Ack/clear/reset pending uCode interrupts. | 1236 | /* Ack/clear/reset pending uCode interrupts. |
1237 | * Note: Some bits in CSR_INT are "OR" of bits in CSR_FH_INT_STATUS, | 1237 | * Note: Some bits in CSR_INT are "OR" of bits in CSR_FH_INT_STATUS, |
1238 | */ | 1238 | */ |
1239 | iwl_write32(priv, CSR_INT, priv->_agn.inta); | 1239 | /* There is a hardware bug in the interrupt mask function that some |
1240 | * interrupts (i.e. CSR_INT_BIT_SCD) can still be generated even if | ||
1241 | * they are disabled in the CSR_INT_MASK register. Furthermore the | ||
1242 | * ICT interrupt handling mechanism has another bug that might cause | ||
1243 | * these unmasked interrupts fail to be detected. We workaround the | ||
1244 | * hardware bugs here by ACKing all the possible interrupts so that | ||
1245 | * interrupt coalescing can still be achieved. | ||
1246 | */ | ||
1247 | iwl_write32(priv, CSR_INT, priv->_agn.inta | ~priv->inta_mask); | ||
1240 | 1248 | ||
1241 | inta = priv->_agn.inta; | 1249 | inta = priv->_agn.inta; |
1242 | 1250 | ||
@@ -2611,7 +2619,7 @@ static int iwl_mac_setup_register(struct iwl_priv *priv) | |||
2611 | BIT(NL80211_IFTYPE_STATION) | | 2619 | BIT(NL80211_IFTYPE_STATION) | |
2612 | BIT(NL80211_IFTYPE_ADHOC); | 2620 | BIT(NL80211_IFTYPE_ADHOC); |
2613 | 2621 | ||
2614 | hw->wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY | | 2622 | hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | |
2615 | WIPHY_FLAG_DISABLE_BEACON_HINTS; | 2623 | WIPHY_FLAG_DISABLE_BEACON_HINTS; |
2616 | 2624 | ||
2617 | /* | 2625 | /* |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 4995134d7e4a..64f150b19771 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -1946,7 +1946,7 @@ static void iwl3945_init_hw_rates(struct iwl_priv *priv, | |||
1946 | { | 1946 | { |
1947 | int i; | 1947 | int i; |
1948 | 1948 | ||
1949 | for (i = 0; i < IWL_RATE_COUNT; i++) { | 1949 | for (i = 0; i < IWL_RATE_COUNT_LEGACY; i++) { |
1950 | rates[i].bitrate = iwl3945_rates[i].ieee * 5; | 1950 | rates[i].bitrate = iwl3945_rates[i].ieee * 5; |
1951 | rates[i].hw_value = i; /* Rate scaling will work on indexes */ | 1951 | rates[i].hw_value = i; /* Rate scaling will work on indexes */ |
1952 | rates[i].hw_value_short = i; | 1952 | rates[i].hw_value_short = i; |
@@ -3950,7 +3950,7 @@ static int iwl3945_setup_mac(struct iwl_priv *priv) | |||
3950 | BIT(NL80211_IFTYPE_STATION) | | 3950 | BIT(NL80211_IFTYPE_STATION) | |
3951 | BIT(NL80211_IFTYPE_ADHOC); | 3951 | BIT(NL80211_IFTYPE_ADHOC); |
3952 | 3952 | ||
3953 | hw->wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY | | 3953 | hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | |
3954 | WIPHY_FLAG_DISABLE_BEACON_HINTS; | 3954 | WIPHY_FLAG_DISABLE_BEACON_HINTS; |
3955 | 3955 | ||
3956 | hw->wiphy->max_scan_ssids = PROBE_OPTION_MAX_3945; | 3956 | hw->wiphy->max_scan_ssids = PROBE_OPTION_MAX_3945; |
diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c index 4396dccd12ac..82ebe1461a77 100644 --- a/drivers/net/wireless/libertas/cfg.c +++ b/drivers/net/wireless/libertas/cfg.c | |||
@@ -172,6 +172,8 @@ int lbs_cfg_register(struct lbs_private *priv) | |||
172 | if (ret < 0) | 172 | if (ret < 0) |
173 | lbs_pr_err("cannot register wiphy device\n"); | 173 | lbs_pr_err("cannot register wiphy device\n"); |
174 | 174 | ||
175 | priv->wiphy_registered = true; | ||
176 | |||
175 | ret = register_netdev(priv->dev); | 177 | ret = register_netdev(priv->dev); |
176 | if (ret) | 178 | if (ret) |
177 | lbs_pr_err("cannot register network device\n"); | 179 | lbs_pr_err("cannot register network device\n"); |
@@ -190,9 +192,11 @@ void lbs_cfg_free(struct lbs_private *priv) | |||
190 | if (!wdev) | 192 | if (!wdev) |
191 | return; | 193 | return; |
192 | 194 | ||
193 | if (wdev->wiphy) { | 195 | if (priv->wiphy_registered) |
194 | wiphy_unregister(wdev->wiphy); | 196 | wiphy_unregister(wdev->wiphy); |
197 | |||
198 | if (wdev->wiphy) | ||
195 | wiphy_free(wdev->wiphy); | 199 | wiphy_free(wdev->wiphy); |
196 | } | 200 | |
197 | kfree(wdev); | 201 | kfree(wdev); |
198 | } | 202 | } |
diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h index 058d1720242e..a54880e4ad2b 100644 --- a/drivers/net/wireless/libertas/dev.h +++ b/drivers/net/wireless/libertas/dev.h | |||
@@ -36,6 +36,7 @@ struct lbs_private { | |||
36 | 36 | ||
37 | /* CFG80211 */ | 37 | /* CFG80211 */ |
38 | struct wireless_dev *wdev; | 38 | struct wireless_dev *wdev; |
39 | bool wiphy_registered; | ||
39 | 40 | ||
40 | /* Mesh */ | 41 | /* Mesh */ |
41 | struct net_device *mesh_dev; /* Virtual device */ | 42 | struct net_device *mesh_dev; /* Virtual device */ |
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index 6599fd15e675..1b5d0aebbb0e 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
@@ -3851,6 +3851,7 @@ MODULE_FIRMWARE("mwl8k/helper_8366.fw"); | |||
3851 | MODULE_FIRMWARE("mwl8k/fmimage_8366.fw"); | 3851 | MODULE_FIRMWARE("mwl8k/fmimage_8366.fw"); |
3852 | 3852 | ||
3853 | static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = { | 3853 | static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = { |
3854 | { PCI_VDEVICE(MARVELL, 0x2a0a), .driver_data = MWL8363, }, | ||
3854 | { PCI_VDEVICE(MARVELL, 0x2a0c), .driver_data = MWL8363, }, | 3855 | { PCI_VDEVICE(MARVELL, 0x2a0c), .driver_data = MWL8363, }, |
3855 | { PCI_VDEVICE(MARVELL, 0x2a24), .driver_data = MWL8363, }, | 3856 | { PCI_VDEVICE(MARVELL, 0x2a24), .driver_data = MWL8363, }, |
3856 | { PCI_VDEVICE(MARVELL, 0x2a2b), .driver_data = MWL8687, }, | 3857 | { PCI_VDEVICE(MARVELL, 0x2a2b), .driver_data = MWL8687, }, |
diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c index b3c4fbd80d8d..e3cfc001d2fd 100644 --- a/drivers/net/wireless/p54/p54usb.c +++ b/drivers/net/wireless/p54/p54usb.c | |||
@@ -35,6 +35,7 @@ MODULE_FIRMWARE("isl3887usb"); | |||
35 | static struct usb_device_id p54u_table[] __devinitdata = { | 35 | static struct usb_device_id p54u_table[] __devinitdata = { |
36 | /* Version 1 devices (pci chip + net2280) */ | 36 | /* Version 1 devices (pci chip + net2280) */ |
37 | {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ | 37 | {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ |
38 | {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ | ||
38 | {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ | 39 | {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ |
39 | {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ | 40 | {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ |
40 | {USB_DEVICE(0x083a, 0x4501)}, /* Accton 802.11g WN4501 USB */ | 41 | {USB_DEVICE(0x083a, 0x4501)}, /* Accton 802.11g WN4501 USB */ |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 9b04964deced..13444b6b3e37 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -1643,6 +1643,11 @@ static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) | |||
1643 | unsigned int i; | 1643 | unsigned int i; |
1644 | 1644 | ||
1645 | /* | 1645 | /* |
1646 | * Disable powersaving as default. | ||
1647 | */ | ||
1648 | rt2x00dev->hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; | ||
1649 | |||
1650 | /* | ||
1646 | * Initialize all hw fields. | 1651 | * Initialize all hw fields. |
1647 | */ | 1652 | */ |
1648 | rt2x00dev->hw->flags = | 1653 | rt2x00dev->hw->flags = |
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 18d4d8e4ae6b..326fce78489d 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c | |||
@@ -812,9 +812,9 @@ static void rt2800_config_channel_rt3x(struct rt2x00_dev *rt2x00dev, | |||
812 | rt2800_rfcsr_write(rt2x00dev, 24, | 812 | rt2800_rfcsr_write(rt2x00dev, 24, |
813 | rt2x00dev->calibration[conf_is_ht40(conf)]); | 813 | rt2x00dev->calibration[conf_is_ht40(conf)]); |
814 | 814 | ||
815 | rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr); | 815 | rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); |
816 | rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1); | 816 | rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1); |
817 | rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); | 817 | rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); |
818 | } | 818 | } |
819 | 819 | ||
820 | static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, | 820 | static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, |