diff options
| author | David S. Miller <davem@davemloft.net> | 2010-08-16 16:56:01 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-08-16 16:56:01 -0400 |
| commit | 5ca6f7c85159a5ca7e637b1d9f79f0d9bc56e5dc (patch) | |
| tree | ed4f35d48b2859d7ced04c9f8e0f4f6b3ac0f603 | |
| parent | daa3766e705c2605bd7f63b80c7742014ef9e04e (diff) | |
| parent | 6ccf15a1a76d2ff915cdef6ae4d12d0170087118 (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
| -rw-r--r-- | drivers/net/wireless/ath/ath5k/base.c | 21 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/eeprom.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/eeprom_9287.c | 7 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/hif_usb.c | 8 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/htc_drv_init.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/htc_drv_main.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 15 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/reg.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ipw2x00/ipw2100.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/wl12xx/wl1251_cmd.c | 2 |
10 files changed, 48 insertions, 16 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 0d5de2574dd1..373dcfec689c 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c | |||
| @@ -48,6 +48,7 @@ | |||
| 48 | #include <linux/netdevice.h> | 48 | #include <linux/netdevice.h> |
| 49 | #include <linux/cache.h> | 49 | #include <linux/cache.h> |
| 50 | #include <linux/pci.h> | 50 | #include <linux/pci.h> |
| 51 | #include <linux/pci-aspm.h> | ||
| 51 | #include <linux/ethtool.h> | 52 | #include <linux/ethtool.h> |
| 52 | #include <linux/uaccess.h> | 53 | #include <linux/uaccess.h> |
| 53 | #include <linux/slab.h> | 54 | #include <linux/slab.h> |
| @@ -476,6 +477,26 @@ ath5k_pci_probe(struct pci_dev *pdev, | |||
| 476 | int ret; | 477 | int ret; |
| 477 | u8 csz; | 478 | u8 csz; |
| 478 | 479 | ||
| 480 | /* | ||
| 481 | * L0s needs to be disabled on all ath5k cards. | ||
| 482 | * | ||
| 483 | * For distributions shipping with CONFIG_PCIEASPM (this will be enabled | ||
| 484 | * by default in the future in 2.6.36) this will also mean both L1 and | ||
| 485 | * L0s will be disabled when a pre 1.1 PCIe device is detected. We do | ||
| 486 | * know L1 works correctly even for all ath5k pre 1.1 PCIe devices | ||
| 487 | * though but cannot currently undue the effect of a blacklist, for | ||
| 488 | * details you can read pcie_aspm_sanity_check() and see how it adjusts | ||
| 489 | * the device link capability. | ||
| 490 | * | ||
| 491 | * It may be possible in the future to implement some PCI API to allow | ||
| 492 | * drivers to override blacklists for pre 1.1 PCIe but for now it is | ||
| 493 | * best to accept that both L0s and L1 will be disabled completely for | ||
| 494 | * distributions shipping with CONFIG_PCIEASPM rather than having this | ||
| 495 | * issue present. Motivation for adding this new API will be to help | ||
| 496 | * with power consumption for some of these devices. | ||
| 497 | */ | ||
| 498 | pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S); | ||
| 499 | |||
| 479 | ret = pci_enable_device(pdev); | 500 | ret = pci_enable_device(pdev); |
| 480 | if (ret) { | 501 | if (ret) { |
| 481 | dev_err(&pdev->dev, "can't enable device\n"); | 502 | dev_err(&pdev->dev, "can't enable device\n"); |
diff --git a/drivers/net/wireless/ath/ath9k/eeprom.h b/drivers/net/wireless/ath/ath9k/eeprom.h index 8750c558c221..7f48df1e2903 100644 --- a/drivers/net/wireless/ath/ath9k/eeprom.h +++ b/drivers/net/wireless/ath/ath9k/eeprom.h | |||
| @@ -191,6 +191,7 @@ | |||
| 191 | #define AR9287_EEP_NO_BACK_VER AR9287_EEP_MINOR_VER_1 | 191 | #define AR9287_EEP_NO_BACK_VER AR9287_EEP_MINOR_VER_1 |
| 192 | 192 | ||
| 193 | #define AR9287_EEP_START_LOC 128 | 193 | #define AR9287_EEP_START_LOC 128 |
| 194 | #define AR9287_HTC_EEP_START_LOC 256 | ||
| 194 | #define AR9287_NUM_2G_CAL_PIERS 3 | 195 | #define AR9287_NUM_2G_CAL_PIERS 3 |
| 195 | #define AR9287_NUM_2G_CCK_TARGET_POWERS 3 | 196 | #define AR9287_NUM_2G_CCK_TARGET_POWERS 3 |
| 196 | #define AR9287_NUM_2G_20_TARGET_POWERS 3 | 197 | #define AR9287_NUM_2G_20_TARGET_POWERS 3 |
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_9287.c b/drivers/net/wireless/ath/ath9k/eeprom_9287.c index 4a52cf03808b..dff2da777312 100644 --- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c +++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c | |||
| @@ -34,9 +34,14 @@ static bool ath9k_hw_ar9287_fill_eeprom(struct ath_hw *ah) | |||
| 34 | struct ar9287_eeprom *eep = &ah->eeprom.map9287; | 34 | struct ar9287_eeprom *eep = &ah->eeprom.map9287; |
| 35 | struct ath_common *common = ath9k_hw_common(ah); | 35 | struct ath_common *common = ath9k_hw_common(ah); |
| 36 | u16 *eep_data; | 36 | u16 *eep_data; |
| 37 | int addr, eep_start_loc = AR9287_EEP_START_LOC; | 37 | int addr, eep_start_loc; |
| 38 | eep_data = (u16 *)eep; | 38 | eep_data = (u16 *)eep; |
| 39 | 39 | ||
| 40 | if (ah->hw_version.devid == 0x7015) | ||
| 41 | eep_start_loc = AR9287_HTC_EEP_START_LOC; | ||
| 42 | else | ||
| 43 | eep_start_loc = AR9287_EEP_START_LOC; | ||
| 44 | |||
| 40 | if (!ath9k_hw_use_flash(ah)) { | 45 | if (!ath9k_hw_use_flash(ah)) { |
| 41 | ath_print(common, ATH_DBG_EEPROM, | 46 | ath_print(common, ATH_DBG_EEPROM, |
| 42 | "Reading from EEPROM, not flash\n"); | 47 | "Reading from EEPROM, not flash\n"); |
diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c index 61c1bee3f26a..17e7a9a367e7 100644 --- a/drivers/net/wireless/ath/ath9k/hif_usb.c +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c | |||
| @@ -799,7 +799,7 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev) | |||
| 799 | } | 799 | } |
| 800 | kfree(buf); | 800 | kfree(buf); |
| 801 | 801 | ||
| 802 | if (hif_dev->device_id == 0x7010) | 802 | if ((hif_dev->device_id == 0x7010) || (hif_dev->device_id == 0x7015)) |
| 803 | firm_offset = AR7010_FIRMWARE_TEXT; | 803 | firm_offset = AR7010_FIRMWARE_TEXT; |
| 804 | else | 804 | else |
| 805 | firm_offset = AR9271_FIRMWARE_TEXT; | 805 | firm_offset = AR9271_FIRMWARE_TEXT; |
| @@ -901,6 +901,7 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface, | |||
| 901 | 901 | ||
| 902 | switch(hif_dev->device_id) { | 902 | switch(hif_dev->device_id) { |
| 903 | case 0x7010: | 903 | case 0x7010: |
| 904 | case 0x7015: | ||
| 904 | case 0x9018: | 905 | case 0x9018: |
| 905 | if (le16_to_cpu(udev->descriptor.bcdDevice) == 0x0202) | 906 | if (le16_to_cpu(udev->descriptor.bcdDevice) == 0x0202) |
| 906 | hif_dev->fw_name = FIRMWARE_AR7010_1_1; | 907 | hif_dev->fw_name = FIRMWARE_AR7010_1_1; |
| @@ -912,11 +913,6 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface, | |||
| 912 | break; | 913 | break; |
| 913 | } | 914 | } |
| 914 | 915 | ||
| 915 | if (!hif_dev->fw_name) { | ||
| 916 | dev_err(&udev->dev, "Can't determine firmware !\n"); | ||
| 917 | goto err_htc_hw_alloc; | ||
| 918 | } | ||
| 919 | |||
| 920 | ret = ath9k_hif_usb_dev_init(hif_dev); | 916 | ret = ath9k_hif_usb_dev_init(hif_dev); |
| 921 | if (ret) { | 917 | if (ret) { |
| 922 | ret = -EINVAL; | 918 | ret = -EINVAL; |
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c index 148b43317fdb..2d4279191d7a 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c | |||
| @@ -245,6 +245,7 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid) | |||
| 245 | 245 | ||
| 246 | switch(devid) { | 246 | switch(devid) { |
| 247 | case 0x7010: | 247 | case 0x7010: |
| 248 | case 0x7015: | ||
| 248 | case 0x9018: | 249 | case 0x9018: |
| 249 | priv->htc->credits = 45; | 250 | priv->htc->credits = 45; |
| 250 | break; | 251 | break; |
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c index ebed9d1691a5..7d09b4b17bbd 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c | |||
| @@ -366,7 +366,8 @@ static void ath9k_htc_setup_rate(struct ath9k_htc_priv *priv, | |||
| 366 | caps = WLAN_RC_HT_FLAG; | 366 | caps = WLAN_RC_HT_FLAG; |
| 367 | if (sta->ht_cap.mcs.rx_mask[1]) | 367 | if (sta->ht_cap.mcs.rx_mask[1]) |
| 368 | caps |= WLAN_RC_DS_FLAG; | 368 | caps |= WLAN_RC_DS_FLAG; |
| 369 | if (sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) | 369 | if ((sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) && |
| 370 | (conf_is_ht40(&priv->hw->conf))) | ||
| 370 | caps |= WLAN_RC_40_FLAG; | 371 | caps |= WLAN_RC_40_FLAG; |
| 371 | if (conf_is_ht40(&priv->hw->conf) && | 372 | if (conf_is_ht40(&priv->hw->conf) && |
| 372 | (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40)) | 373 | (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40)) |
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c index bd0b4acc3ece..2a6e45a293a9 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | |||
| @@ -78,18 +78,23 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb) | |||
| 78 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); | 78 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); |
| 79 | struct ieee80211_sta *sta = tx_info->control.sta; | 79 | struct ieee80211_sta *sta = tx_info->control.sta; |
| 80 | struct ath9k_htc_sta *ista; | 80 | struct ath9k_htc_sta *ista; |
| 81 | struct ath9k_htc_vif *avp; | ||
| 82 | struct ath9k_htc_tx_ctl tx_ctl; | 81 | struct ath9k_htc_tx_ctl tx_ctl; |
| 83 | enum htc_endpoint_id epid; | 82 | enum htc_endpoint_id epid; |
| 84 | u16 qnum; | 83 | u16 qnum; |
| 85 | __le16 fc; | 84 | __le16 fc; |
| 86 | u8 *tx_fhdr; | 85 | u8 *tx_fhdr; |
| 87 | u8 sta_idx; | 86 | u8 sta_idx, vif_idx; |
| 88 | 87 | ||
| 89 | hdr = (struct ieee80211_hdr *) skb->data; | 88 | hdr = (struct ieee80211_hdr *) skb->data; |
| 90 | fc = hdr->frame_control; | 89 | fc = hdr->frame_control; |
| 91 | 90 | ||
| 92 | avp = (struct ath9k_htc_vif *) tx_info->control.vif->drv_priv; | 91 | if (tx_info->control.vif && |
| 92 | (struct ath9k_htc_vif *) tx_info->control.vif->drv_priv) | ||
| 93 | vif_idx = ((struct ath9k_htc_vif *) | ||
| 94 | tx_info->control.vif->drv_priv)->index; | ||
| 95 | else | ||
| 96 | vif_idx = priv->nvifs; | ||
| 97 | |||
| 93 | if (sta) { | 98 | if (sta) { |
| 94 | ista = (struct ath9k_htc_sta *) sta->drv_priv; | 99 | ista = (struct ath9k_htc_sta *) sta->drv_priv; |
| 95 | sta_idx = ista->index; | 100 | sta_idx = ista->index; |
| @@ -106,7 +111,7 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb) | |||
| 106 | memset(&tx_hdr, 0, sizeof(struct tx_frame_hdr)); | 111 | memset(&tx_hdr, 0, sizeof(struct tx_frame_hdr)); |
| 107 | 112 | ||
| 108 | tx_hdr.node_idx = sta_idx; | 113 | tx_hdr.node_idx = sta_idx; |
| 109 | tx_hdr.vif_idx = avp->index; | 114 | tx_hdr.vif_idx = vif_idx; |
| 110 | 115 | ||
| 111 | if (tx_info->flags & IEEE80211_TX_CTL_AMPDU) { | 116 | if (tx_info->flags & IEEE80211_TX_CTL_AMPDU) { |
| 112 | tx_ctl.type = ATH9K_HTC_AMPDU; | 117 | tx_ctl.type = ATH9K_HTC_AMPDU; |
| @@ -169,7 +174,7 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb) | |||
| 169 | tx_ctl.type = ATH9K_HTC_NORMAL; | 174 | tx_ctl.type = ATH9K_HTC_NORMAL; |
| 170 | 175 | ||
| 171 | mgmt_hdr.node_idx = sta_idx; | 176 | mgmt_hdr.node_idx = sta_idx; |
| 172 | mgmt_hdr.vif_idx = avp->index; | 177 | mgmt_hdr.vif_idx = vif_idx; |
| 173 | mgmt_hdr.tidno = 0; | 178 | mgmt_hdr.tidno = 0; |
| 174 | mgmt_hdr.flags = 0; | 179 | mgmt_hdr.flags = 0; |
| 175 | 180 | ||
diff --git a/drivers/net/wireless/ath/ath9k/reg.h b/drivers/net/wireless/ath/ath9k/reg.h index 633e3d949ec0..d01c4adab8d6 100644 --- a/drivers/net/wireless/ath/ath9k/reg.h +++ b/drivers/net/wireless/ath/ath9k/reg.h | |||
| @@ -899,6 +899,7 @@ | |||
| 899 | 899 | ||
| 900 | #define AR_DEVID_7010(_ah) \ | 900 | #define AR_DEVID_7010(_ah) \ |
| 901 | (((_ah)->hw_version.devid == 0x7010) || \ | 901 | (((_ah)->hw_version.devid == 0x7010) || \ |
| 902 | ((_ah)->hw_version.devid == 0x7015) || \ | ||
| 902 | ((_ah)->hw_version.devid == 0x9018)) | 903 | ((_ah)->hw_version.devid == 0x9018)) |
| 903 | 904 | ||
| 904 | #define AR_RADIO_SREV_MAJOR 0xf0 | 905 | #define AR_RADIO_SREV_MAJOR 0xf0 |
diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c index 16bbfa3189a5..1189dbb6e2a6 100644 --- a/drivers/net/wireless/ipw2x00/ipw2100.c +++ b/drivers/net/wireless/ipw2x00/ipw2100.c | |||
| @@ -6665,12 +6665,13 @@ static int __init ipw2100_init(void) | |||
| 6665 | printk(KERN_INFO DRV_NAME ": %s, %s\n", DRV_DESCRIPTION, DRV_VERSION); | 6665 | printk(KERN_INFO DRV_NAME ": %s, %s\n", DRV_DESCRIPTION, DRV_VERSION); |
| 6666 | printk(KERN_INFO DRV_NAME ": %s\n", DRV_COPYRIGHT); | 6666 | printk(KERN_INFO DRV_NAME ": %s\n", DRV_COPYRIGHT); |
| 6667 | 6667 | ||
| 6668 | pm_qos_add_request(&ipw2100_pm_qos_req, PM_QOS_CPU_DMA_LATENCY, | ||
| 6669 | PM_QOS_DEFAULT_VALUE); | ||
| 6670 | |||
| 6668 | ret = pci_register_driver(&ipw2100_pci_driver); | 6671 | ret = pci_register_driver(&ipw2100_pci_driver); |
| 6669 | if (ret) | 6672 | if (ret) |
| 6670 | goto out; | 6673 | goto out; |
| 6671 | 6674 | ||
| 6672 | pm_qos_add_request(&ipw2100_pm_qos_req, PM_QOS_CPU_DMA_LATENCY, | ||
| 6673 | PM_QOS_DEFAULT_VALUE); | ||
| 6674 | #ifdef CONFIG_IPW2100_DEBUG | 6675 | #ifdef CONFIG_IPW2100_DEBUG |
| 6675 | ipw2100_debug_level = debug; | 6676 | ipw2100_debug_level = debug; |
| 6676 | ret = driver_create_file(&ipw2100_pci_driver.driver, | 6677 | ret = driver_create_file(&ipw2100_pci_driver.driver, |
diff --git a/drivers/net/wireless/wl12xx/wl1251_cmd.c b/drivers/net/wireless/wl12xx/wl1251_cmd.c index a37b30cef489..ce3722f4c3e3 100644 --- a/drivers/net/wireless/wl12xx/wl1251_cmd.c +++ b/drivers/net/wireless/wl12xx/wl1251_cmd.c | |||
| @@ -484,7 +484,7 @@ int wl1251_cmd_trigger_scan_to(struct wl1251 *wl, u32 timeout) | |||
| 484 | 484 | ||
| 485 | cmd->timeout = timeout; | 485 | cmd->timeout = timeout; |
| 486 | 486 | ||
| 487 | ret = wl1251_cmd_send(wl, CMD_SCAN, cmd, sizeof(*cmd)); | 487 | ret = wl1251_cmd_send(wl, CMD_TRIGGER_SCAN_TO, cmd, sizeof(*cmd)); |
| 488 | if (ret < 0) { | 488 | if (ret < 0) { |
| 489 | wl1251_error("cmd trigger scan to failed: %d", ret); | 489 | wl1251_error("cmd trigger scan to failed: %d", ret); |
| 490 | goto out; | 490 | goto out; |
