Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3cce9bb0 authored by Emmanuel Grumbach's avatar Emmanuel Grumbach
Browse files

Merge tag 'iwlwifi-for-kalle-2016-02-15' into HEAD

These are a few fixes for the current cycle.
3 out of the 5 patches fix a bugzilla.

* fix a race that users reported when we try to load the firmware
  and the hardware rfkill interrupt triggers at the same time.
* Luca fixes a very visible bug in scheduled scan: our firmware
  doesn't support scheduled scan with no profile configured and
  the supplicant sometimes requests such scheduled scans.
* build system fix
* firmware name update for 8265
* typo fix in return value
parents dd4d3161 20aa99bb
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -53,7 +53,6 @@ config IWLWIFI_LEDS

config IWLDVM
	tristate "Intel Wireless WiFi DVM Firmware support"
	depends on m
	help
	  This is the driver that supports the DVM firmware. The list
	  of the devices that use this firmware is available here:
+19 −4
Original line number Diff line number Diff line
@@ -74,16 +74,19 @@
#define IWL7260_UCODE_API_MAX	17
#define IWL7265_UCODE_API_MAX	17
#define IWL7265D_UCODE_API_MAX	20
#define IWL3168_UCODE_API_MAX	20

/* Oldest version we won't warn about */
#define IWL7260_UCODE_API_OK	13
#define IWL7265_UCODE_API_OK	13
#define IWL7265D_UCODE_API_OK	13
#define IWL3168_UCODE_API_OK	20

/* Lowest firmware API version supported */
#define IWL7260_UCODE_API_MIN	13
#define IWL7265_UCODE_API_MIN	13
#define IWL7265D_UCODE_API_MIN	13
#define IWL3168_UCODE_API_MIN	20

/* NVM versions */
#define IWL7260_NVM_VERSION		0x0a1d
@@ -92,6 +95,8 @@
#define IWL3160_TX_POWER_VERSION	0xffff /* meaningless */
#define IWL3165_NVM_VERSION		0x709
#define IWL3165_TX_POWER_VERSION	0xffff /* meaningless */
#define IWL3168_NVM_VERSION		0xd01
#define IWL3168_TX_POWER_VERSION	0xffff /* meaningless */
#define IWL7265_NVM_VERSION		0x0a1d
#define IWL7265_TX_POWER_VERSION	0xffff /* meaningless */
#define IWL7265D_NVM_VERSION		0x0c11
@@ -109,6 +114,9 @@
#define IWL3160_FW_PRE "iwlwifi-3160-"
#define IWL3160_MODULE_FIRMWARE(api) IWL3160_FW_PRE __stringify(api) ".ucode"

#define IWL3168_FW_PRE "iwlwifi-3168-"
#define IWL3168_MODULE_FIRMWARE(api) IWL3168_FW_PRE __stringify(api) ".ucode"

#define IWL7265_FW_PRE "iwlwifi-7265-"
#define IWL7265_MODULE_FIRMWARE(api) IWL7265_FW_PRE __stringify(api) ".ucode"

@@ -180,6 +188,12 @@ static const struct iwl_ht_params iwl7000_ht_params = {
	.ucode_api_ok = IWL7265_UCODE_API_OK,			\
	.ucode_api_min = IWL7265_UCODE_API_MIN

#define IWL_DEVICE_3008						\
	IWL_DEVICE_7000_COMMON,					\
	.ucode_api_max = IWL3168_UCODE_API_MAX,			\
	.ucode_api_ok = IWL3168_UCODE_API_OK,			\
	.ucode_api_min = IWL3168_UCODE_API_MIN

#define IWL_DEVICE_7005D					\
	IWL_DEVICE_7000_COMMON,					\
	.ucode_api_max = IWL7265D_UCODE_API_MAX,		\
@@ -299,11 +313,11 @@ const struct iwl_cfg iwl3165_2ac_cfg = {

const struct iwl_cfg iwl3168_2ac_cfg = {
	.name = "Intel(R) Dual Band Wireless AC 3168",
	.fw_name_pre = IWL7265D_FW_PRE,
	IWL_DEVICE_7000,
	.fw_name_pre = IWL3168_FW_PRE,
	IWL_DEVICE_3008,
	.ht_params = &iwl7000_ht_params,
	.nvm_ver = IWL3165_NVM_VERSION,
	.nvm_calib_ver = IWL3165_TX_POWER_VERSION,
	.nvm_ver = IWL3168_NVM_VERSION,
	.nvm_calib_ver = IWL3168_TX_POWER_VERSION,
	.pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
	.dccm_len = IWL7265_DCCM_LEN,
};
@@ -376,5 +390,6 @@ const struct iwl_cfg iwl7265d_n_cfg = {

MODULE_FIRMWARE(IWL7260_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
MODULE_FIRMWARE(IWL3168_MODULE_FIRMWARE(IWL3168_UCODE_API_OK));
MODULE_FIRMWARE(IWL7265_MODULE_FIRMWARE(IWL7265_UCODE_API_OK));
MODULE_FIRMWARE(IWL7265D_MODULE_FIRMWARE(IWL7265D_UCODE_API_OK));
+33 −9
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
 *
 * Copyright(c) 2014 Intel Corporation. All rights reserved.
 * Copyright(c) 2014 - 2015 Intel Mobile Communications GmbH
 * Copyright(c) 2016 Intel Deutschland GmbH
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of version 2 of the GNU General Public License as
@@ -70,12 +71,15 @@

/* Highest firmware API version supported */
#define IWL8000_UCODE_API_MAX	20
#define IWL8265_UCODE_API_MAX	20

/* Oldest version we won't warn about */
#define IWL8000_UCODE_API_OK	13
#define IWL8265_UCODE_API_OK	20

/* Lowest firmware API version supported */
#define IWL8000_UCODE_API_MIN	13
#define IWL8265_UCODE_API_MIN	20

/* NVM versions */
#define IWL8000_NVM_VERSION		0x0a1d
@@ -93,6 +97,10 @@
#define IWL8000_MODULE_FIRMWARE(api) \
	IWL8000_FW_PRE "-" __stringify(api) ".ucode"

#define IWL8265_FW_PRE "iwlwifi-8265-"
#define IWL8265_MODULE_FIRMWARE(api) \
	IWL8265_FW_PRE __stringify(api) ".ucode"

#define NVM_HW_SECTION_NUM_FAMILY_8000		10
#define DEFAULT_NVM_FILE_FAMILY_8000B		"nvmData-8000B"
#define DEFAULT_NVM_FILE_FAMILY_8000C		"nvmData-8000C"
@@ -144,10 +152,7 @@ static const struct iwl_tt_params iwl8000_tt_params = {
	.support_tx_backoff = true,
};

#define IWL_DEVICE_8000							\
	.ucode_api_max = IWL8000_UCODE_API_MAX,				\
	.ucode_api_ok = IWL8000_UCODE_API_OK,				\
	.ucode_api_min = IWL8000_UCODE_API_MIN,				\
#define IWL_DEVICE_8000_COMMON						\
	.device_family = IWL_DEVICE_FAMILY_8000,			\
	.max_inst_size = IWL60_RTC_INST_SIZE,				\
	.max_data_size = IWL60_RTC_DATA_SIZE,				\
@@ -167,10 +172,28 @@ static const struct iwl_tt_params iwl8000_tt_params = {
	.thermal_params = &iwl8000_tt_params,				\
	.apmg_not_supported = true

#define IWL_DEVICE_8000							\
	IWL_DEVICE_8000_COMMON,						\
	.ucode_api_max = IWL8000_UCODE_API_MAX,				\
	.ucode_api_ok = IWL8000_UCODE_API_OK,				\
	.ucode_api_min = IWL8000_UCODE_API_MIN				\

#define IWL_DEVICE_8260							\
	IWL_DEVICE_8000_COMMON,						\
	.ucode_api_max = IWL8000_UCODE_API_MAX,				\
	.ucode_api_ok = IWL8000_UCODE_API_OK,				\
	.ucode_api_min = IWL8000_UCODE_API_MIN				\

#define IWL_DEVICE_8265							\
	IWL_DEVICE_8000_COMMON,						\
	.ucode_api_max = IWL8265_UCODE_API_MAX,				\
	.ucode_api_ok = IWL8265_UCODE_API_OK,				\
	.ucode_api_min = IWL8265_UCODE_API_MIN				\

const struct iwl_cfg iwl8260_2n_cfg = {
	.name = "Intel(R) Dual Band Wireless N 8260",
	.fw_name_pre = IWL8000_FW_PRE,
	IWL_DEVICE_8000,
	IWL_DEVICE_8260,
	.ht_params = &iwl8000_ht_params,
	.nvm_ver = IWL8000_NVM_VERSION,
	.nvm_calib_ver = IWL8000_TX_POWER_VERSION,
@@ -179,7 +202,7 @@ const struct iwl_cfg iwl8260_2n_cfg = {
const struct iwl_cfg iwl8260_2ac_cfg = {
	.name = "Intel(R) Dual Band Wireless AC 8260",
	.fw_name_pre = IWL8000_FW_PRE,
	IWL_DEVICE_8000,
	IWL_DEVICE_8260,
	.ht_params = &iwl8000_ht_params,
	.nvm_ver = IWL8000_NVM_VERSION,
	.nvm_calib_ver = IWL8000_TX_POWER_VERSION,
@@ -188,8 +211,8 @@ const struct iwl_cfg iwl8260_2ac_cfg = {

const struct iwl_cfg iwl8265_2ac_cfg = {
	.name = "Intel(R) Dual Band Wireless AC 8265",
	.fw_name_pre = IWL8000_FW_PRE,
	IWL_DEVICE_8000,
	.fw_name_pre = IWL8265_FW_PRE,
	IWL_DEVICE_8265,
	.ht_params = &iwl8000_ht_params,
	.nvm_ver = IWL8000_NVM_VERSION,
	.nvm_calib_ver = IWL8000_TX_POWER_VERSION,
@@ -209,7 +232,7 @@ const struct iwl_cfg iwl4165_2ac_cfg = {
const struct iwl_cfg iwl8260_2ac_sdio_cfg = {
	.name = "Intel(R) Dual Band Wireless-AC 8260",
	.fw_name_pre = IWL8000_FW_PRE,
	IWL_DEVICE_8000,
	IWL_DEVICE_8260,
	.ht_params = &iwl8000_ht_params,
	.nvm_ver = IWL8000_NVM_VERSION,
	.nvm_calib_ver = IWL8000_TX_POWER_VERSION,
@@ -236,3 +259,4 @@ const struct iwl_cfg iwl4165_2ac_sdio_cfg = {
};

MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK));
MODULE_FIRMWARE(IWL8265_MODULE_FIRMWARE(IWL8265_UCODE_API_OK));
+4 −2
Original line number Diff line number Diff line
@@ -243,8 +243,10 @@ static int iwl_request_firmware(struct iwl_drv *drv, bool first)
	if (drv->trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) {
		char rev_step = 'A' + CSR_HW_REV_STEP(drv->trans->hw_rev);

		snprintf(drv->firmware_name, sizeof(drv->firmware_name),
			 "%s%c-%s.ucode", name_pre, rev_step, tag);
		if (rev_step != 'A')
			snprintf(drv->firmware_name,
				 sizeof(drv->firmware_name), "%s%c-%s.ucode",
				 name_pre, rev_step, tag);
	}

	IWL_DEBUG_INFO(drv, "attempting to load firmware %s'%s'\n",
+5 −1
Original line number Diff line number Diff line
@@ -510,6 +510,9 @@ struct iwl_mvm_tx_resp {
 * @scd_ssn: the index of the last contiguously sent packet
 * @txed: number of Txed frames in this batch
 * @txed_2_done: number of Acked frames in this batch
 * @reduced_txp: power reduced according to TPC. This is the actual value and
 *	not a copy from the LQ command. Thus, if not the first rate was used
 *	for Tx-ing then this value will be set to 0 by FW.
 */
struct iwl_mvm_ba_notif {
	__le32 sta_addr_lo32;
@@ -524,7 +527,8 @@ struct iwl_mvm_ba_notif {
	__le16 scd_ssn;
	u8 txed;
	u8 txed_2_done;
	__le16 reserved1;
	u8 reduced_txp;
	u8 reserved1;
} __packed;

/*
Loading