aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2013-04-26 08:37:39 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-04-26 08:37:39 -0400
commit222b048cb288ecfd4ea63ff89d670f1298416983 (patch)
treecbfc2fd2ffac1ca4b8695a391450df87ad53643d /drivers/net/wireless
parent375e875c696ae65e7ce748721ec2dc93ca0a16df (diff)
parent499892f2a9ad89910ff21c687273ac80b4367dc0 (diff)
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/agn.h2
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/debugfs.c16
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/main.c6
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/sta.c5
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mac80211.c2
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c5
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/power.c16
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/utils.c5
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/drv.c1
9 files changed, 24 insertions, 34 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/agn.h b/drivers/net/wireless/iwlwifi/dvm/agn.h
index e575b9b0cda8..48545ab00311 100644
--- a/drivers/net/wireless/iwlwifi/dvm/agn.h
+++ b/drivers/net/wireless/iwlwifi/dvm/agn.h
@@ -172,7 +172,7 @@ int iwl_calib_set(struct iwl_priv *priv,
172 const struct iwl_calib_hdr *cmd, int len); 172 const struct iwl_calib_hdr *cmd, int len);
173void iwl_calib_free_results(struct iwl_priv *priv); 173void iwl_calib_free_results(struct iwl_priv *priv);
174int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log, 174int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log,
175 char **buf, bool display); 175 char **buf);
176int iwlagn_hw_valid_rtc_data_addr(u32 addr); 176int iwlagn_hw_valid_rtc_data_addr(u32 addr);
177 177
178/* lib */ 178/* lib */
diff --git a/drivers/net/wireless/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
index 7b8178be119f..d5329489245a 100644
--- a/drivers/net/wireless/iwlwifi/dvm/debugfs.c
+++ b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
@@ -2237,15 +2237,13 @@ static ssize_t iwl_dbgfs_log_event_read(struct file *file,
2237 size_t count, loff_t *ppos) 2237 size_t count, loff_t *ppos)
2238{ 2238{
2239 struct iwl_priv *priv = file->private_data; 2239 struct iwl_priv *priv = file->private_data;
2240 char *buf; 2240 char *buf = NULL;
2241 int pos = 0; 2241 ssize_t ret;
2242 ssize_t ret = -ENOMEM;
2243 2242
2244 ret = pos = iwl_dump_nic_event_log(priv, true, &buf, true); 2243 ret = iwl_dump_nic_event_log(priv, true, &buf);
2245 if (buf) { 2244 if (ret > 0)
2246 ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos); 2245 ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
2247 kfree(buf); 2246 kfree(buf);
2248 }
2249 return ret; 2247 return ret;
2250} 2248}
2251 2249
@@ -2269,7 +2267,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
2269 if (sscanf(buf, "%d", &event_log_flag) != 1) 2267 if (sscanf(buf, "%d", &event_log_flag) != 1)
2270 return -EFAULT; 2268 return -EFAULT;
2271 if (event_log_flag == 1) 2269 if (event_log_flag == 1)
2272 iwl_dump_nic_event_log(priv, true, NULL, false); 2270 iwl_dump_nic_event_log(priv, true, NULL);
2273 2271
2274 return count; 2272 return count;
2275} 2273}
diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c
index b9e3517652d6..74d7572e7091 100644
--- a/drivers/net/wireless/iwlwifi/dvm/main.c
+++ b/drivers/net/wireless/iwlwifi/dvm/main.c
@@ -1795,7 +1795,7 @@ static int iwl_print_last_event_logs(struct iwl_priv *priv, u32 capacity,
1795#define DEFAULT_DUMP_EVENT_LOG_ENTRIES (20) 1795#define DEFAULT_DUMP_EVENT_LOG_ENTRIES (20)
1796 1796
1797int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log, 1797int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log,
1798 char **buf, bool display) 1798 char **buf)
1799{ 1799{
1800 u32 base; /* SRAM byte address of event log header */ 1800 u32 base; /* SRAM byte address of event log header */
1801 u32 capacity; /* event log capacity in # entries */ 1801 u32 capacity; /* event log capacity in # entries */
@@ -1866,7 +1866,7 @@ int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log,
1866 size); 1866 size);
1867 1867
1868#ifdef CONFIG_IWLWIFI_DEBUG 1868#ifdef CONFIG_IWLWIFI_DEBUG
1869 if (display) { 1869 if (buf) {
1870 if (full_log) 1870 if (full_log)
1871 bufsz = capacity * 48; 1871 bufsz = capacity * 48;
1872 else 1872 else
@@ -1962,7 +1962,7 @@ static void iwl_nic_error(struct iwl_op_mode *op_mode)
1962 priv->fw->fw_version); 1962 priv->fw->fw_version);
1963 1963
1964 iwl_dump_nic_error_log(priv); 1964 iwl_dump_nic_error_log(priv);
1965 iwl_dump_nic_event_log(priv, false, NULL, false); 1965 iwl_dump_nic_event_log(priv, false, NULL);
1966 1966
1967 iwlagn_fw_error(priv, false); 1967 iwlagn_fw_error(priv, false);
1968} 1968}
diff --git a/drivers/net/wireless/iwlwifi/dvm/sta.c b/drivers/net/wireless/iwlwifi/dvm/sta.c
index b775769f8322..db183b44e038 100644
--- a/drivers/net/wireless/iwlwifi/dvm/sta.c
+++ b/drivers/net/wireless/iwlwifi/dvm/sta.c
@@ -695,6 +695,7 @@ void iwl_clear_ucode_stations(struct iwl_priv *priv,
695void iwl_restore_stations(struct iwl_priv *priv, struct iwl_rxon_context *ctx) 695void iwl_restore_stations(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
696{ 696{
697 struct iwl_addsta_cmd sta_cmd; 697 struct iwl_addsta_cmd sta_cmd;
698 static const struct iwl_link_quality_cmd zero_lq = {};
698 struct iwl_link_quality_cmd lq; 699 struct iwl_link_quality_cmd lq;
699 int i; 700 int i;
700 bool found = false; 701 bool found = false;
@@ -733,7 +734,9 @@ void iwl_restore_stations(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
733 else 734 else
734 memcpy(&lq, priv->stations[i].lq, 735 memcpy(&lq, priv->stations[i].lq,
735 sizeof(struct iwl_link_quality_cmd)); 736 sizeof(struct iwl_link_quality_cmd));
736 send_lq = true; 737
738 if (!memcmp(&lq, &zero_lq, sizeof(lq)))
739 send_lq = true;
737 } 740 }
738 spin_unlock_bh(&priv->sta_lock); 741 spin_unlock_bh(&priv->sta_lock);
739 ret = iwl_send_add_sta(priv, &sta_cmd, CMD_SYNC); 742 ret = iwl_send_add_sta(priv, &sta_cmd, CMD_SYNC);
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
index fe031608fd91..dd158ec571fb 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
@@ -207,7 +207,7 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
207 207
208 hw->wiphy->hw_version = mvm->trans->hw_id; 208 hw->wiphy->hw_version = mvm->trans->hw_id;
209 209
210 if (iwlwifi_mod_params.power_save) 210 if (iwlmvm_mod_params.power_scheme != IWL_POWER_SCHEME_CAM)
211 hw->wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT; 211 hw->wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT;
212 else 212 else
213 hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; 213 hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;
diff --git a/drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c b/drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c
index 0f0b44eabd93..a28a1d1f23eb 100644
--- a/drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c
+++ b/drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c
@@ -153,11 +153,6 @@ static void iwl_mvm_phy_ctxt_cmd_data(struct iwl_mvm *mvm,
153 cmd->ci.ctrl_pos = iwl_mvm_get_ctrl_pos(chandef); 153 cmd->ci.ctrl_pos = iwl_mvm_get_ctrl_pos(chandef);
154 154
155 /* Set rx the chains */ 155 /* Set rx the chains */
156
157 /* TODO:
158 * Need to add on chain noise calibration limitations, and
159 * BT coex considerations.
160 */
161 idle_cnt = chains_static; 156 idle_cnt = chains_static;
162 active_cnt = chains_dynamic; 157 active_cnt = chains_dynamic;
163 158
diff --git a/drivers/net/wireless/iwlwifi/mvm/power.c b/drivers/net/wireless/iwlwifi/mvm/power.c
index 9395ab2a1af2..ed77e437aac4 100644
--- a/drivers/net/wireless/iwlwifi/mvm/power.c
+++ b/drivers/net/wireless/iwlwifi/mvm/power.c
@@ -111,8 +111,7 @@ void iwl_mvm_power_build_cmd(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
111 */ 111 */
112 cmd->keep_alive_seconds = POWER_KEEP_ALIVE_PERIOD_SEC; 112 cmd->keep_alive_seconds = POWER_KEEP_ALIVE_PERIOD_SEC;
113 113
114 if ((iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_CAM) || 114 if (iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_CAM)
115 !iwlwifi_mod_params.power_save)
116 return; 115 return;
117 116
118 cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_SAVE_ENA_MSK); 117 cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_SAVE_ENA_MSK);
@@ -146,14 +145,8 @@ void iwl_mvm_power_build_cmd(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
146 keep_alive = DIV_ROUND_UP(keep_alive, MSEC_PER_SEC); 145 keep_alive = DIV_ROUND_UP(keep_alive, MSEC_PER_SEC);
147 cmd->keep_alive_seconds = keep_alive; 146 cmd->keep_alive_seconds = keep_alive;
148 147
149 if (iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_LP) { 148 cmd->rx_data_timeout = cpu_to_le32(100 * USEC_PER_MSEC);
150 /* TODO: Also for D3 (device sleep / WoWLAN) */ 149 cmd->tx_data_timeout = cpu_to_le32(100 * USEC_PER_MSEC);
151 cmd->rx_data_timeout = cpu_to_le32(10 * USEC_PER_MSEC);
152 cmd->tx_data_timeout = cpu_to_le32(10 * USEC_PER_MSEC);
153 } else {
154 cmd->rx_data_timeout = cpu_to_le32(100 * USEC_PER_MSEC);
155 cmd->tx_data_timeout = cpu_to_le32(100 * USEC_PER_MSEC);
156 }
157} 150}
158 151
159int iwl_mvm_power_update_mode(struct iwl_mvm *mvm, struct ieee80211_vif *vif) 152int iwl_mvm_power_update_mode(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
@@ -177,8 +170,7 @@ int iwl_mvm_power_disable(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
177 if (vif->type != NL80211_IFTYPE_STATION || vif->p2p) 170 if (vif->type != NL80211_IFTYPE_STATION || vif->p2p)
178 return 0; 171 return 0;
179 172
180 if ((iwlmvm_mod_params.power_scheme != IWL_POWER_SCHEME_CAM) && 173 if (iwlmvm_mod_params.power_scheme != IWL_POWER_SCHEME_CAM)
181 iwlwifi_mod_params.power_save)
182 cmd.flags |= cpu_to_le16(POWER_FLAGS_POWER_SAVE_ENA_MSK); 174 cmd.flags |= cpu_to_le16(POWER_FLAGS_POWER_SAVE_ENA_MSK);
183 175
184 iwl_mvm_power_log(mvm, &cmd); 176 iwl_mvm_power_log(mvm, &cmd);
diff --git a/drivers/net/wireless/iwlwifi/mvm/utils.c b/drivers/net/wireless/iwlwifi/mvm/utils.c
index 0cc8d8c0d393..687b34e387ac 100644
--- a/drivers/net/wireless/iwlwifi/mvm/utils.c
+++ b/drivers/net/wireless/iwlwifi/mvm/utils.c
@@ -253,8 +253,9 @@ int iwl_mvm_rx_fw_error(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb,
253u8 first_antenna(u8 mask) 253u8 first_antenna(u8 mask)
254{ 254{
255 BUILD_BUG_ON(ANT_A != BIT(0)); /* using ffs is wrong if not */ 255 BUILD_BUG_ON(ANT_A != BIT(0)); /* using ffs is wrong if not */
256 WARN_ON_ONCE(!mask); /* ffs will return 0 if mask is zeroed */ 256 if (WARN_ON_ONCE(!mask)) /* ffs will return 0 if mask is zeroed */
257 return (u8)(BIT(ffs(mask))); 257 return BIT(0);
258 return BIT(ffs(mask) - 1);
258} 259}
259 260
260/* 261/*
diff --git a/drivers/net/wireless/iwlwifi/pcie/drv.c b/drivers/net/wireless/iwlwifi/pcie/drv.c
index 0016bb24b3d7..8cb53ec2b77b 100644
--- a/drivers/net/wireless/iwlwifi/pcie/drv.c
+++ b/drivers/net/wireless/iwlwifi/pcie/drv.c
@@ -256,6 +256,7 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
256 256
257/* 7000 Series */ 257/* 7000 Series */
258 {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7260_2ac_cfg)}, 258 {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7260_2ac_cfg)},
259 {IWL_PCI_DEVICE(0x08B1, 0x4062, iwl7260_2ac_cfg)},
259 {IWL_PCI_DEVICE(0x08B1, 0xC070, iwl7260_2ac_cfg)}, 260 {IWL_PCI_DEVICE(0x08B1, 0xC070, iwl7260_2ac_cfg)},
260 {IWL_PCI_DEVICE(0x08B3, 0x0070, iwl3160_ac_cfg)}, 261 {IWL_PCI_DEVICE(0x08B3, 0x0070, iwl3160_ac_cfg)},
261 {IWL_PCI_DEVICE(0x08B3, 0x8070, iwl3160_ac_cfg)}, 262 {IWL_PCI_DEVICE(0x08B3, 0x8070, iwl3160_ac_cfg)},