aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorKalle Valo <kvalo@codeaurora.org>2015-04-07 12:55:57 -0400
committerKalle Valo <kvalo@codeaurora.org>2015-04-07 12:55:57 -0400
commit6dcaac59d08b77d5730f2ae824bca1c0bf8130dc (patch)
tree5d01321c7ceedb7a9a294ac20dadee372b301d0b /drivers/net/wireless
parent7abccdba25be45630eede85053496f1f48d36ec8 (diff)
parent31755207afc5d5a30e3eea9e4f2a518fc5b680c1 (diff)
Merge tag 'iwlwifi-next-for-kalle-2015-04-02' of https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next
* some more work on LAR * fixes for UMAC scan * more work on debugging framework * more work for 8000 devices * cleanups and small bugfixes
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-8000.c12
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-config.h6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-drv.c42
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-drv.h2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom-read.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-fh.h2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-fw-error-dump.h12
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-fw-file.h85
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-io.c13
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-nvm-parse.c57
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-nvm-parse.h3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-op-mode.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-phy-db.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-prph.h25
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans.h12
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/d3.c6
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/debugfs.c31
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h4
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/fw-api-mac.h2
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h14
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/fw.c23
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c7
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mac80211.c166
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mvm.h24
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/nvm.c63
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/ops.c34
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c2
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/rs.c19
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/rx.c4
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/scan.c73
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/sta.c28
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/sta.h6
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/time-event.c81
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/time-event.h4
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/tx.c8
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/utils.c72
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/rx.c8
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/trans.c62
38 files changed, 712 insertions, 310 deletions
<
diff --git a/drivers/net/wireless/iwlwifi/iwl-8000.c b/drivers/net/wireless/iwlwifi/iwl-8000.c
index 9c396a42aec8..ce6321b7d241 100644
--- a/drivers/net/wireless/iwlwifi/iwl-8000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-8000.c
@@ -94,8 +94,8 @@
94 IWL8000_FW_PRE "-" __stringify(api) ".ucode" 94 IWL8000_FW_PRE "-" __stringify(api) ".ucode"
95 95
96#define NVM_HW_SECTION_NUM_FAMILY_8000 10 96#define NVM_HW_SECTION_NUM_FAMILY_8000 10
97#define DEFAULT_NVM_FILE_FAMILY_8000A "iwl_nvm_8000.bin" 97#define DEFAULT_NVM_FILE_FAMILY_8000B "nvmData-8000B"
98#define DEFAULT_NVM_FILE_FAMILY_8000 "iwl_nvm_8000B.bin" 98#define DEFAULT_NVM_FILE_FAMILY_8000C "nvmData-8000C"
99 99
100/* Max SDIO RX aggregation size of the ADDBA request/response */ 100/* Max SDIO RX aggregation size of the ADDBA request/response */
101#define MAX_RX_AGG_SIZE_8260_SDIO 28 101#define MAX_RX_AGG_SIZE_8260_SDIO 28
@@ -177,8 +177,8 @@ const struct iwl_cfg iwl8260_2ac_sdio_cfg = {
177 .ht_params = &iwl8000_ht_params, 177 .ht_params = &iwl8000_ht_params,
178 .nvm_ver = IWL8000_NVM_VERSION, 178 .nvm_ver = IWL8000_NVM_VERSION,
179 .nvm_calib_ver = IWL8000_TX_POWER_VERSION, 179 .nvm_calib_ver = IWL8000_TX_POWER_VERSION,
180 .default_nvm_file = DEFAULT_NVM_FILE_FAMILY_8000, 180 .default_nvm_file_B_step = DEFAULT_NVM_FILE_FAMILY_8000B,
181 .default_nvm_file_8000A = DEFAULT_NVM_FILE_FAMILY_8000A, 181 .default_nvm_file_C_step = DEFAULT_NVM_FILE_FAMILY_8000C,
182 .max_rx_agg_size = MAX_RX_AGG_SIZE_8260_SDIO, 182 .max_rx_agg_size = MAX_RX_AGG_SIZE_8260_SDIO,
183 .disable_dummy_notification = true, 183 .disable_dummy_notification = true,
184 .max_ht_ampdu_exponent = MAX_HT_AMPDU_EXPONENT_8260_SDIO, 184 .max_ht_ampdu_exponent = MAX_HT_AMPDU_EXPONENT_8260_SDIO,
@@ -192,8 +192,8 @@ const struct iwl_cfg iwl4165_2ac_sdio_cfg = {
192 .ht_params = &iwl8000_ht_params, 192 .ht_params = &iwl8000_ht_params,
193 .nvm_ver = IWL8000_NVM_VERSION, 193 .nvm_ver = IWL8000_NVM_VERSION,
194 .nvm_calib_ver = IWL8000_TX_POWER_VERSION, 194 .nvm_calib_ver = IWL8000_TX_POWER_VERSION,
195 .default_nvm_file = DEFAULT_NVM_FILE_FAMILY_8000, 195 .default_nvm_file_B_step = DEFAULT_NVM_FILE_FAMILY_8000B,
196 .default_nvm_file_8000A = DEFAULT_NVM_FILE_FAMILY_8000A, 196 .default_nvm_file_C_step = DEFAULT_NVM_FILE_FAMILY_8000C,
197 .max_rx_agg_size = MAX_RX_AGG_SIZE_8260_SDIO, 197 .max_rx_agg_size = MAX_RX_AGG_SIZE_8260_SDIO,
198 .bt_shared_single_ant = true, 198 .bt_shared_single_ant = true,
199 .disable_dummy_notification = true, 199 .disable_dummy_notification = true,
diff --git a/drivers/net/wireless/iwlwifi/iwl-config.h b/drivers/net/wireless/iwlwifi/iwl-config.h
index 4b190d98a1ec..07e999a32a7f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-config.h
+++ b/drivers/net/wireless/iwlwifi/iwl-config.h
@@ -228,7 +228,7 @@ struct iwl_pwr_tx_backoff {
228 228
229/** 229/**
230 * struct iwl_cfg 230 * struct iwl_cfg
231 * @name: Offical name of the device 231 * @name: Official name of the device
232 * @fw_name_pre: Firmware filename prefix. The api version and extension 232 * @fw_name_pre: Firmware filename prefix. The api version and extension
233 * (.ucode) will be added to filename before loading from disk. The 233 * (.ucode) will be added to filename before loading from disk. The
234 * filename is constructed as fw_name_pre<api>.ucode. 234 * filename is constructed as fw_name_pre<api>.ucode.
@@ -303,8 +303,8 @@ struct iwl_cfg {
303 bool lp_xtal_workaround; 303 bool lp_xtal_workaround;
304 const struct iwl_pwr_tx_backoff *pwr_tx_backoffs; 304 const struct iwl_pwr_tx_backoff *pwr_tx_backoffs;
305 bool no_power_up_nic_in_init; 305 bool no_power_up_nic_in_init;
306 const char *default_nvm_file; 306 const char *default_nvm_file_B_step;
307 const char *default_nvm_file_8000A; 307 const char *default_nvm_file_C_step;
308 unsigned int max_rx_agg_size; 308 unsigned int max_rx_agg_size;
309 bool disable_dummy_notification; 309 bool disable_dummy_notification;
310 unsigned int max_tx_agg_size; 310 unsigned int max_tx_agg_size;
diff --git a/drivers/net/wireless/iwlwifi/iwl-drv.c b/drivers/net/wireless/iwlwifi/iwl-drv.c
index aefdd9b7c105..7267152e7dc7 100644
--- a/drivers/net/wireless/iwlwifi/iwl-drv.c
+++ b/drivers/net/wireless/iwlwifi/iwl-drv.c
@@ -145,7 +145,7 @@ static struct iwlwifi_opmode_table {
145#define IWL_DEFAULT_SCAN_CHANNELS 40 145#define IWL_DEFAULT_SCAN_CHANNELS 40
146 146
147/* 147/*
148 * struct fw_sec: Just for the image parsing proccess. 148 * struct fw_sec: Just for the image parsing process.
149 * For the fw storage we are using struct fw_desc. 149 * For the fw storage we are using struct fw_desc.
150 */ 150 */
151struct fw_sec { 151struct fw_sec {
@@ -241,16 +241,10 @@ static int iwl_request_firmware(struct iwl_drv *drv, bool first)
241 * previous name and uses the new format. 241 * previous name and uses the new format.
242 */ 242 */
243 if (drv->trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) { 243 if (drv->trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) {
244 char rev_step[2] = { 244 char rev_step = 'A' + CSR_HW_REV_STEP(drv->trans->hw_rev);
245 'A' + CSR_HW_REV_STEP(drv->trans->hw_rev), 0
246 };
247
248 /* A-step doesn't have an indication */
249 if (CSR_HW_REV_STEP(drv->trans->hw_rev) == SILICON_A_STEP)
250 rev_step[0] = 0;
251 245
252 snprintf(drv->firmware_name, sizeof(drv->firmware_name), 246 snprintf(drv->firmware_name, sizeof(drv->firmware_name),
253 "%s%s-%s.ucode", name_pre, rev_step, tag); 247 "%s%c-%s.ucode", name_pre, rev_step, tag);
254 } 248 }
255 249
256 IWL_DEBUG_INFO(drv, "attempting to load firmware %s'%s'\n", 250 IWL_DEBUG_INFO(drv, "attempting to load firmware %s'%s'\n",
@@ -1108,6 +1102,7 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
1108 const unsigned int api_max = drv->cfg->ucode_api_max; 1102 const unsigned int api_max = drv->cfg->ucode_api_max;
1109 unsigned int api_ok = drv->cfg->ucode_api_ok; 1103 unsigned int api_ok = drv->cfg->ucode_api_ok;
1110 const unsigned int api_min = drv->cfg->ucode_api_min; 1104 const unsigned int api_min = drv->cfg->ucode_api_min;
1105 size_t trigger_tlv_sz[FW_DBG_TRIGGER_MAX];
1111 u32 api_ver; 1106 u32 api_ver;
1112 int i; 1107 int i;
1113 bool load_module = false; 1108 bool load_module = false;
@@ -1227,8 +1222,37 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)