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 0b0d2dc2f38c..99a6da464bd3 100644 --- a/drivers/net/wireless/ath/ar9170/usb.c +++ b/drivers/net/wireless/ath/ar9170/usb.c | |||
@@ -95,6 +95,8 @@ static struct usb_device_id ar9170_usb_ids[] = { | |||
95 | { USB_DEVICE(0x04bb, 0x093f) }, | 95 | { USB_DEVICE(0x04bb, 0x093f) }, |
96 | /* AVM FRITZ!WLAN USB Stick N */ | 96 | /* AVM FRITZ!WLAN USB Stick N */ |
97 | { USB_DEVICE(0x057C, 0x8401) }, | 97 | { USB_DEVICE(0x057C, 0x8401) }, |
98 | /* NEC WL300NU-G */ | ||
99 | { USB_DEVICE(0x0409, 0x0249) }, | ||
98 | /* AVM FRITZ!WLAN USB Stick N 2.4 */ | 100 | /* AVM FRITZ!WLAN USB Stick N 2.4 */ |
99 | { USB_DEVICE(0x057C, 0x8402), .driver_info = AR9170_REQ_FW1_ONLY }, | 101 | { USB_DEVICE(0x057C, 0x8402), .driver_info = AR9170_REQ_FW1_ONLY }, |
100 | 102 | ||
@@ -417,7 +419,7 @@ static int ar9170_usb_exec_cmd(struct ar9170 *ar, enum ar9170_cmd cmd, | |||
417 | spin_unlock_irqrestore(&aru->common.cmdlock, flags); | 419 | spin_unlock_irqrestore(&aru->common.cmdlock, flags); |
418 | 420 | ||
419 | usb_fill_int_urb(urb, aru->udev, | 421 | usb_fill_int_urb(urb, aru->udev, |
420 | usb_sndbulkpipe(aru->udev, AR9170_EP_CMD), | 422 | usb_sndintpipe(aru->udev, AR9170_EP_CMD), |
421 | aru->common.cmdbuf, plen + 4, | 423 | aru->common.cmdbuf, plen + 4, |
422 | ar9170_usb_tx_urb_complete, NULL, 1); | 424 | ar9170_usb_tx_urb_complete, NULL, 1); |
423 | 425 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index 1bd2cd836026..83c52a682622 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -2041,16 +2041,14 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv, | |||
2041 | tx_resp->failure_frame); | 2041 | tx_resp->failure_frame); |
2042 | 2042 | ||
2043 | freed = iwl_tx_queue_reclaim(priv, txq_id, index); | 2043 | freed = iwl_tx_queue_reclaim(priv, txq_id, index); |
2044 | if (qc && likely(sta_id != IWL_INVALID_STATION)) | 2044 | iwl_free_tfds_in_queue(priv, sta_id, tid, freed); |
2045 | priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; | ||
2046 | 2045 | ||
2047 | if (priv->mac80211_registered && | 2046 | if (priv->mac80211_registered && |
2048 | (iwl_queue_space(&txq->q) > txq->q.low_mark)) | 2047 | (iwl_queue_space(&txq->q) > txq->q.low_mark)) |
2049 | iwl_wake_queue(priv, txq_id); | 2048 | iwl_wake_queue(priv, txq_id); |
2050 | } | 2049 | } |
2051 | 2050 | ||
2052 | if (qc && likely(sta_id != IWL_INVALID_STATION)) | 2051 | iwl_txq_check_empty(priv, sta_id, tid, txq_id); |
2053 | iwl_txq_check_empty(priv, sta_id, tid, txq_id); | ||
2054 | 2052 | ||
2055 | if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK)) | 2053 | if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK)) |
2056 | IWL_ERR(priv, "TODO: Implement Tx ABORT REQUIRED!!!\n"); | 2054 | 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 5e0c6bf3fbb1..8b8e3e1cbb44 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -1259,7 +1259,15 @@ static void iwl_irq_tasklet(struct iwl_priv *priv) | |||
1259 | /* Ack/clear/reset pending uCode interrupts. | 1259 | /* Ack/clear/reset pending uCode interrupts. |
1260 | * Note: Some bits in CSR_INT are "OR" of bits in CSR_FH_INT_STATUS, | 1260 | * Note: Some bits in CSR_INT are "OR" of bits in CSR_FH_INT_STATUS, |
1261 | */ | 1261 | */ |
1262 | iwl_write32(priv, CSR_INT, priv->inta); | 1262 | /* There is a hardware bug in the interrupt mask function that some |
1263 | * interrupts (i.e. CSR_INT_BIT_SCD) can still be generated even if | ||
1264 | * they are disabled in the CSR_INT_MASK register. Furthermore the | ||
1265 | * ICT interrupt handling mechanism has another bug that might cause | ||
1266 | * these unmasked interrupts fail to be detected. We workaround the | ||
1267 | * hardware bugs here by ACKing all the possible interrupts so that | ||
1268 | * interrupt coalescing can still be achieved. | ||
1269 | */ | ||
1270 | iwl_write32(priv, CSR_INT, priv->inta | ~priv->inta_mask); | ||
1263 | 1271 | ||
1264 | inta = priv->inta; | 1272 | inta = priv->inta; |
1265 | 1273 | ||
@@ -2645,7 +2653,7 @@ static int iwl_mac_setup_register(struct iwl_priv *priv) | |||
2645 | BIT(NL80211_IFTYPE_STATION) | | 2653 | BIT(NL80211_IFTYPE_STATION) | |
2646 | BIT(NL80211_IFTYPE_ADHOC); | 2654 | BIT(NL80211_IFTYPE_ADHOC); |
2647 | 2655 | ||
2648 | hw->wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY | | 2656 | hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | |
2649 | WIPHY_FLAG_DISABLE_BEACON_HINTS; | 2657 | WIPHY_FLAG_DISABLE_BEACON_HINTS; |
2650 | 2658 | ||
2651 | /* | 2659 | /* |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 1eaa0052c11b..b55e4f39a9e1 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -1956,7 +1956,7 @@ static void iwl3945_init_hw_rates(struct iwl_priv *priv, | |||
1956 | { | 1956 | { |
1957 | int i; | 1957 | int i; |
1958 | 1958 | ||
1959 | for (i = 0; i < IWL_RATE_COUNT; i++) { | 1959 | for (i = 0; i < IWL_RATE_COUNT_LEGACY; i++) { |
1960 | rates[i].bitrate = iwl3945_rates[i].ieee * 5; | 1960 | rates[i].bitrate = iwl3945_rates[i].ieee * 5; |
1961 | rates[i].hw_value = i; /* Rate scaling will work on indexes */ | 1961 | rates[i].hw_value = i; /* Rate scaling will work on indexes */ |
1962 | rates[i].hw_value_short = i; | 1962 | rates[i].hw_value_short = i; |
@@ -3922,7 +3922,7 @@ static int iwl3945_setup_mac(struct iwl_priv *priv) | |||
3922 | BIT(NL80211_IFTYPE_STATION) | | 3922 | BIT(NL80211_IFTYPE_STATION) | |
3923 | BIT(NL80211_IFTYPE_ADHOC); | 3923 | BIT(NL80211_IFTYPE_ADHOC); |
3924 | 3924 | ||
3925 | hw->wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY | | 3925 | hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | |
3926 | WIPHY_FLAG_DISABLE_BEACON_HINTS; | 3926 | WIPHY_FLAG_DISABLE_BEACON_HINTS; |
3927 | 3927 | ||
3928 | hw->wiphy->max_scan_ssids = PROBE_OPTION_MAX_3945; | 3928 | 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 e196b84914db..ce7bec402a33 100644 --- a/drivers/net/wireless/libertas/cfg.c +++ b/drivers/net/wireless/libertas/cfg.c | |||
@@ -173,6 +173,8 @@ int lbs_cfg_register(struct lbs_private *priv) | |||
173 | if (ret < 0) | 173 | if (ret < 0) |
174 | lbs_pr_err("cannot register wiphy device\n"); | 174 | lbs_pr_err("cannot register wiphy device\n"); |
175 | 175 | ||
176 | priv->wiphy_registered = true; | ||
177 | |||
176 | ret = register_netdev(priv->dev); | 178 | ret = register_netdev(priv->dev); |
177 | if (ret) | 179 | if (ret) |
178 | lbs_pr_err("cannot register network device\n"); | 180 | lbs_pr_err("cannot register network device\n"); |
@@ -191,9 +193,11 @@ void lbs_cfg_free(struct lbs_private *priv) | |||
191 | if (!wdev) | 193 | if (!wdev) |
192 | return; | 194 | return; |
193 | 195 | ||
194 | if (wdev->wiphy) { | 196 | if (priv->wiphy_registered) |
195 | wiphy_unregister(wdev->wiphy); | 197 | wiphy_unregister(wdev->wiphy); |
198 | |||
199 | if (wdev->wiphy) | ||
196 | wiphy_free(wdev->wiphy); | 200 | wiphy_free(wdev->wiphy); |
197 | } | 201 | |
198 | kfree(wdev); | 202 | kfree(wdev); |
199 | } | 203 | } |
diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h index 6977ee820214..6875e1498bd5 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 89354c29f088..12fdcb25fd38 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
@@ -3852,6 +3852,7 @@ MODULE_FIRMWARE("mwl8k/helper_8366.fw"); | |||
3852 | MODULE_FIRMWARE("mwl8k/fmimage_8366.fw"); | 3852 | MODULE_FIRMWARE("mwl8k/fmimage_8366.fw"); |
3853 | 3853 | ||
3854 | static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = { | 3854 | static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = { |
3855 | { PCI_VDEVICE(MARVELL, 0x2a0a), .driver_data = MWL8363, }, | ||
3855 | { PCI_VDEVICE(MARVELL, 0x2a0c), .driver_data = MWL8363, }, | 3856 | { PCI_VDEVICE(MARVELL, 0x2a0c), .driver_data = MWL8363, }, |
3856 | { PCI_VDEVICE(MARVELL, 0x2a24), .driver_data = MWL8363, }, | 3857 | { PCI_VDEVICE(MARVELL, 0x2a24), .driver_data = MWL8363, }, |
3857 | { PCI_VDEVICE(MARVELL, 0x2a2b), .driver_data = MWL8687, }, | 3858 | { PCI_VDEVICE(MARVELL, 0x2a2b), .driver_data = MWL8687, }, |
diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c index 762952d688e2..743a6c68b29d 100644 --- a/drivers/net/wireless/p54/p54usb.c +++ b/drivers/net/wireless/p54/p54usb.c | |||
@@ -36,6 +36,7 @@ MODULE_FIRMWARE("isl3887usb"); | |||
36 | static struct usb_device_id p54u_table[] __devinitdata = { | 36 | static struct usb_device_id p54u_table[] __devinitdata = { |
37 | /* Version 1 devices (pci chip + net2280) */ | 37 | /* Version 1 devices (pci chip + net2280) */ |
38 | {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ | 38 | {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ |
39 | {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ | ||
39 | {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ | 40 | {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ |
40 | {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ | 41 | {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ |
41 | {USB_DEVICE(0x083a, 0x4501)}, /* Accton 802.11g WN4501 USB */ | 42 | {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 d2cc4458477f..8ebb705fe106 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -1644,6 +1644,11 @@ static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) | |||
1644 | unsigned int i; | 1644 | unsigned int i; |
1645 | 1645 | ||
1646 | /* | 1646 | /* |
1647 | * Disable powersaving as default. | ||
1648 | */ | ||
1649 | rt2x00dev->hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; | ||
1650 | |||
1651 | /* | ||
1647 | * Initialize all hw fields. | 1652 | * Initialize all hw fields. |
1648 | */ | 1653 | */ |
1649 | rt2x00dev->hw->flags = | 1654 | rt2x00dev->hw->flags = |
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 58c7f218019d..c015ce9fdd09 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c | |||
@@ -813,9 +813,9 @@ static void rt2800_config_channel_rt3x(struct rt2x00_dev *rt2x00dev, | |||
813 | rt2800_rfcsr_write(rt2x00dev, 24, | 813 | rt2800_rfcsr_write(rt2x00dev, 24, |
814 | rt2x00dev->calibration[conf_is_ht40(conf)]); | 814 | rt2x00dev->calibration[conf_is_ht40(conf)]); |
815 | 815 | ||
816 | rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr); | 816 | rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); |
817 | rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1); | 817 | rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1); |
818 | rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); | 818 | rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); |
819 | } | 819 | } |
820 | 820 | ||
821 | static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, | 821 | static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, |