diff options
| author | David S. Miller <davem@davemloft.net> | 2009-07-22 14:18:40 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-07-22 14:18:40 -0400 |
| commit | d14a7679ae9b7d4eb4b92e81f5039b719fd98c4d (patch) | |
| tree | cb12e313178092e92136704660d68f7ce6578d19 | |
| parent | de72e5de062e48a992d6cafe2291a82fe498d641 (diff) | |
| parent | 154839962a582b8eb661cde94ef3af0e03b374d7 (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 | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ani.c | 12 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/regd.c | 17 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-tx.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/iwmc3200wifi/netdev.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/libertas/cmd.c | 8 | ||||
| -rw-r--r-- | drivers/net/wireless/libertas/defs.h | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/mac80211_hwsim.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/p54/p54spi.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/rtl818x/rtl8187_leds.c | 3 | ||||
| -rw-r--r-- | drivers/platform/x86/acer-wmi.c | 2 | ||||
| -rw-r--r-- | include/linux/rfkill.h | 2 | ||||
| -rw-r--r-- | net/mac80211/Kconfig | 1 | ||||
| -rw-r--r-- | net/mac80211/mesh_pathtbl.c | 11 | ||||
| -rw-r--r-- | net/mac80211/tx.c | 2 | ||||
| -rw-r--r-- | net/rfkill/core.c | 31 | ||||
| -rw-r--r-- | net/wireless/nl80211.c | 5 | ||||
| -rw-r--r-- | net/wireless/scan.c | 3 |
21 files changed, 94 insertions, 33 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index ea045151f953..029c1bc7468f 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c | |||
| @@ -2970,6 +2970,9 @@ ath5k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, | |||
| 2970 | if (modparam_nohwcrypt) | 2970 | if (modparam_nohwcrypt) |
| 2971 | return -EOPNOTSUPP; | 2971 | return -EOPNOTSUPP; |
| 2972 | 2972 | ||
| 2973 | if (sc->opmode == NL80211_IFTYPE_AP) | ||
| 2974 | return -EOPNOTSUPP; | ||
| 2975 | |||
| 2973 | switch (key->alg) { | 2976 | switch (key->alg) { |
| 2974 | case ALG_WEP: | 2977 | case ALG_WEP: |
| 2975 | case ALG_TKIP: | 2978 | case ALG_TKIP: |
diff --git a/drivers/net/wireless/ath/ath9k/ani.c b/drivers/net/wireless/ath/ath9k/ani.c index 1aeafb511ddd..aad259b4c197 100644 --- a/drivers/net/wireless/ath/ath9k/ani.c +++ b/drivers/net/wireless/ath/ath9k/ani.c | |||
| @@ -478,6 +478,18 @@ void ath9k_ani_reset(struct ath_hw *ah) | |||
| 478 | "Reset ANI state opmode %u\n", ah->opmode); | 478 | "Reset ANI state opmode %u\n", ah->opmode); |
| 479 | ah->stats.ast_ani_reset++; | 479 | ah->stats.ast_ani_reset++; |
| 480 | 480 | ||
| 481 | if (ah->opmode == NL80211_IFTYPE_AP) { | ||
| 482 | /* | ||
| 483 | * ath9k_hw_ani_control() will only process items set on | ||
| 484 | * ah->ani_function | ||
| 485 | */ | ||
| 486 | if (IS_CHAN_2GHZ(chan)) | ||
| 487 | ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL | | ||
| 488 | ATH9K_ANI_FIRSTEP_LEVEL); | ||
| 489 | else | ||
| 490 | ah->ani_function = 0; | ||
| 491 | } | ||
| 492 | |||
| 481 | ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL, 0); | 493 | ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL, 0); |
| 482 | ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, 0); | 494 | ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, 0); |
| 483 | ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, 0); | 495 | ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, 0); |
diff --git a/drivers/net/wireless/ath/regd.c b/drivers/net/wireless/ath/regd.c index eef370bd1211..bf3d25ba7be1 100644 --- a/drivers/net/wireless/ath/regd.c +++ b/drivers/net/wireless/ath/regd.c | |||
| @@ -474,6 +474,21 @@ ath_regd_init_wiphy(struct ath_regulatory *reg, | |||
| 474 | return 0; | 474 | return 0; |
| 475 | } | 475 | } |
| 476 | 476 | ||
| 477 | /* | ||
| 478 | * Some users have reported their EEPROM programmed with | ||
| 479 | * 0x8000 set, this is not a supported regulatory domain | ||
| 480 | * but since we have more than one user with it we need | ||
| 481 | * a solution for them. We default to 0x64, which is the | ||
| 482 | * default Atheros world regulatory domain. | ||
| 483 | */ | ||
| 484 | static void ath_regd_sanitize(struct ath_regulatory *reg) | ||
| 485 | { | ||
| 486 | if (reg->current_rd != COUNTRY_ERD_FLAG) | ||
| 487 | return; | ||
| 488 | printk(KERN_DEBUG "ath: EEPROM regdomain sanitized\n"); | ||
| 489 | reg->current_rd = 0x64; | ||
| 490 | } | ||
| 491 | |||
| 477 | int | 492 | int |
| 478 | ath_regd_init(struct ath_regulatory *reg, | 493 | ath_regd_init(struct ath_regulatory *reg, |
| 479 | struct wiphy *wiphy, | 494 | struct wiphy *wiphy, |
| @@ -486,6 +501,8 @@ ath_regd_init(struct ath_regulatory *reg, | |||
| 486 | if (!reg) | 501 | if (!reg) |
| 487 | return -EINVAL; | 502 | return -EINVAL; |
| 488 | 503 | ||
| 504 | ath_regd_sanitize(reg); | ||
| 505 | |||
| 489 | printk(KERN_DEBUG "ath: EEPROM regdomain: 0x%0x\n", reg->current_rd); | 506 | printk(KERN_DEBUG "ath: EEPROM regdomain: 0x%0x\n", reg->current_rd); |
| 490 | 507 | ||
| 491 | if (!ath_regd_is_eeprom_valid(reg)) { | 508 | if (!ath_regd_is_eeprom_valid(reg)) { |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 6d1519e1f011..355f50ea7fef 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
| @@ -2675,12 +2675,10 @@ static ssize_t show_power_level(struct device *d, | |||
| 2675 | struct device_attribute *attr, char *buf) | 2675 | struct device_attribute *attr, char *buf) |
| 2676 | { | 2676 | { |
| 2677 | struct iwl_priv *priv = dev_get_drvdata(d); | 2677 | struct iwl_priv *priv = dev_get_drvdata(d); |
| 2678 | int mode = priv->power_data.user_power_setting; | ||
| 2679 | int level = priv->power_data.power_mode; | 2678 | int level = priv->power_data.power_mode; |
| 2680 | char *p = buf; | 2679 | char *p = buf; |
| 2681 | 2680 | ||
| 2682 | p += sprintf(p, "INDEX:%d\t", level); | 2681 | p += sprintf(p, "%d\n", level); |
| 2683 | p += sprintf(p, "USER:%d\n", mode); | ||
| 2684 | return p - buf + 1; | 2682 | return p - buf + 1; |
| 2685 | } | 2683 | } |
| 2686 | 2684 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c index 85ae7a62109c..9bbeec9427f0 100644 --- a/drivers/net/wireless/iwlwifi/iwl-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-tx.c | |||
| @@ -872,7 +872,8 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb) | |||
| 872 | iwl_print_hex_dump(priv, IWL_DL_TX, (u8 *)tx_cmd->hdr, hdr_len); | 872 | iwl_print_hex_dump(priv, IWL_DL_TX, (u8 *)tx_cmd->hdr, hdr_len); |
| 873 | 873 | ||
| 874 | /* Set up entry for this TFD in Tx byte-count array */ | 874 | /* Set up entry for this TFD in Tx byte-count array */ |
| 875 | priv->cfg->ops->lib->txq_update_byte_cnt_tbl(priv, txq, | 875 | if (info->flags & IEEE80211_TX_CTL_AMPDU) |
| 876 | priv->cfg->ops->lib->txq_update_byte_cnt_tbl(priv, txq, | ||
| 876 | le16_to_cpu(tx_cmd->len)); | 877 | le16_to_cpu(tx_cmd->len)); |
| 877 | 878 | ||
| 878 | pci_dma_sync_single_for_device(priv->pci_dev, txcmd_phys, | 879 | pci_dma_sync_single_for_device(priv->pci_dev, txcmd_phys, |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index cb9bd4c8f25e..956798f2c80c 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
| @@ -3643,12 +3643,10 @@ static ssize_t show_power_level(struct device *d, | |||
| 3643 | struct device_attribute *attr, char *buf) | 3643 | struct device_attribute *attr, char *buf) |
| 3644 | { | 3644 | { |
| 3645 | struct iwl_priv *priv = dev_get_drvdata(d); | 3645 | struct iwl_priv *priv = dev_get_drvdata(d); |
| 3646 | int mode = priv->power_data.user_power_setting; | ||
| 3647 | int level = priv->power_data.power_mode; | 3646 | int level = priv->power_data.power_mode; |
| 3648 | char *p = buf; | 3647 | char *p = buf; |
| 3649 | 3648 | ||
| 3650 | p += sprintf(p, "INDEX:%d\t", level); | 3649 | p += sprintf(p, "%d\n", level); |
| 3651 | p += sprintf(p, "USER:%d\n", mode); | ||
| 3652 | return p - buf + 1; | 3650 | return p - buf + 1; |
| 3653 | } | 3651 | } |
| 3654 | 3652 | ||
diff --git a/drivers/net/wireless/iwmc3200wifi/netdev.c b/drivers/net/wireless/iwmc3200wifi/netdev.c index aaa20c6885c8..aea5ccf24ccf 100644 --- a/drivers/net/wireless/iwmc3200wifi/netdev.c +++ b/drivers/net/wireless/iwmc3200wifi/netdev.c | |||
| @@ -151,8 +151,8 @@ void iwm_if_free(struct iwm_priv *iwm) | |||
| 151 | return; | 151 | return; |
| 152 | 152 | ||
| 153 | free_netdev(iwm_to_ndev(iwm)); | 153 | free_netdev(iwm_to_ndev(iwm)); |
| 154 | iwm_wdev_free(iwm); | ||
| 155 | iwm_priv_deinit(iwm); | 154 | iwm_priv_deinit(iwm); |
| 155 | iwm_wdev_free(iwm); | ||
| 156 | } | 156 | } |
| 157 | 157 | ||
| 158 | int iwm_if_add(struct iwm_priv *iwm) | 158 | int iwm_if_add(struct iwm_priv *iwm) |
diff --git a/drivers/net/wireless/libertas/cmd.c b/drivers/net/wireless/libertas/cmd.c index 01db705a38ec..685098148e10 100644 --- a/drivers/net/wireless/libertas/cmd.c +++ b/drivers/net/wireless/libertas/cmd.c | |||
| @@ -135,8 +135,14 @@ int lbs_update_hw_spec(struct lbs_private *priv) | |||
| 135 | /* Clamp region code to 8-bit since FW spec indicates that it should | 135 | /* Clamp region code to 8-bit since FW spec indicates that it should |
| 136 | * only ever be 8-bit, even though the field size is 16-bit. Some firmware | 136 | * only ever be 8-bit, even though the field size is 16-bit. Some firmware |
| 137 | * returns non-zero high 8 bits here. | ||
